我有2个工厂档案
规格/工厂/ cars.rb
规格/工厂/ users.rb的
用户可以有很多车,我想为这种情况创建一个特殊的特性。
进入我的汽车工厂:
FactoryGirl.define do
factory :car do
...
trait :is_blue do
color 'blue'
end
end
factory :blue_car, parent: :car do
is_blue
end
end
我的用户工厂
FactoryGirl.define do
factory :user do
...
trait :with_cars do
cars [ FactoryGirl.create(:blue_car) ]
end
end
factory :user_with_cars, parent: :user do
with_cars
end
end
当我想使用' user_with_cars'工厂进入我的用户规划'文件我有一个未注册的工厂:blue_car'错误
示例:
context 'with cars' do
subject { create(:user_with_cars) }
it 'should make some stuff' do
expect(subject.cars).not_to be_empty
...
end
end
答案 0 :(得分:1)
我找到了解决方案。
我改变了创造关系的方式。 在添加关系的特性中,我使用'after(:create)'回调。
规格/工厂/ users.rb的
FactoryGirl.define do
factory :user do
...
trait :with_cars do
after(:create) do |user|
user.cars << create(:blue_car)
end
end
factory :user_with_cars, parent: :user do
with_cars
end
end