工厂女孩,关联默认特征,但在特征通过时不关联
factory girl, association in default trait, but leave it unassociated when trait is passed
我正在使用 rspec 具有多个 Addresses
的 Company
模型进行测试。
我正在使用 factory girl 来生成我的测试环境,我希望默认公司注册了几个地址,而我希望公司的特定案例没有任何特征 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
我怎样才能使工厂在我使用特性 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
我正在使用 rspec 具有多个 Addresses
的 Company
模型进行测试。
我正在使用 factory girl 来生成我的测试环境,我希望默认公司注册了几个地址,而我希望公司的特定案例没有任何特征 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
我怎样才能使工厂在我使用特性 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