FactoryGirl: почему attribute_for опускает некоторые атрибуты?
Я хочу использовать FactoryGirl.attributes_for в тестировании контроллера, как в:
<code>it "raise error creating a new PremiseGroup for this user" do expect { post :create, {:premise_group => FactoryGirl.attributes_for(:premise_group)} }.to raise_error(CanCan::AccessDenied) end </code>
... но это не работает, потому что #attributes_for не содержит атрибут: user_id. Вот разница между#create
а также#attributes_for
:
<code>>> FactoryGirl.create(:premise_group) => #<PremiseGroup id: 3, name: "PremiseGroup_4", user_id: 6, is_visible: false, is_open: false) >> FactoryGirl.attributes_for(:premise_group) => {:name=>"PremiseGroup_5", :is_visible=>false, :is_open=>false} </code>
Обратите внимание, что: user_id отсутствует в#attributes_for
, Это ожидаемое поведение?
FWIW, мой файл заводов содержит определения для:premise_group
и для:user
:
<code>FactoryGirl.define do ... factory :premise_group do sequence(:name) {|n| "PremiseGroup_#{n}"} user is_visible false is_open false end factory :user do ... end end </code>