我正在用rspec测试一个具有几个Company
的Addresses
模型。
我正在使用factory girl来生成我的测试环境,我希望默认的Company拥有一些注册的地址,而我希望具有Company的特定情况的特征,而没有Address
。
这是我现在在工厂正在做的事情:
FactoryGirl.define do
factory :company do
sequence(:name) { |n| "company #{n}" }
description { "description #{name}" }
trait :no_address do
addresses nil
end
after(:create) do |company, evaluator|
create_list(:address, 3, company: company)
end
end
end
如何制造工厂,以便在使用trait
no_address
时完全不创建地址?谢谢,
最佳答案
FactoryGirl的transient attributes可能正是您需要的:
FactoryGirl.define do
factory :company do
transient do
create_address true
end
sequence(:name) { |n| "company #{n}" }
description { "description #{name}" }
trait :no_address do
transient do
create_address false
end
end
after(:create) do |company, evaluator|
create_list(:address, 3, company: company) if evaluator.create_address
end
end
end
关于ruby-on-rails - 工厂女孩,默认特征中具有关联,但是在传递特征时使其不关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30165257/