我是 FactoryGirl 的新手,我正在尝试以下简单的场景?
factory :female, :class => Gender do
code 'Female'
end
factory :male, :class => Gender do
code 'Male'
end
factory :papas, :class => Customer do
first_name 'Jim'
last_name 'Papas'
association :gender, :factory => :male, :strategy => :build
end
factory :dumas, :class => Customer do
first_name 'Mary'
last_name 'Dumas'
association :gender, :factory => :female, :strategy => :build
end
然后在我的测试中:
create(:male)
create(:female)
create(:papas)
create(:dumas)
请注意,Customer 类有一个关联belongs_to
Gender
类和一个表示gender_id
应该存在的验证规则。我还Gender
对代码的唯一性进行了类验证。
在create(:papas)
上面的陈述中,在我的测试中,我得到了Customer
将要创建的错误是无效的,因为gender_id
是nil
.
如果我删除与性别的:strategy => :build
工厂Customer
:papas
关联,那么我会收到一个错误,即在尝试创建时:papas
,性别的代码已经存在。
我需要做什么才能让我的测试按照上面的要求创建数据?
请注意,在其他测试中,我也希望在没有客户的情况下创建性别。不要告诉我用工厂创建命令创建客户,同时让客户创建性别。如果我也尝试创建两个相同性别的客户,这将不起作用。
此外,必须有一个比这个更好的答案:
@male = create(:male)
@female = create(:female)
create(:papas, :gender => @male)
create(:dumas, :gender => @female)
(使用固定装置时,这些东西是开箱即用的。我应该回到固定装置吗?)