我有以下工厂:
FactoryGirl.define do
factory :user do
name 'Name'
password 'password'
email 'email@example.com'
end
end
我在before
块中有以下代码(我正在创建email
- some_boolean_flag
对的所有可能变体,其中电子邮件可以采用''
,默认值和some_boolean_flag可以是假的/无或真的):
FactoryGirl.create(:user, email: '', some_boolean_flag: false)
FactoryGirl.create(:user, email: '', some_boolean_flag: true)
FactoryGirl.create(:user, some_boolean_flag: nil)
FactoryGirl.create(:user, some_boolean_flag: true)
我该怎么干? FactoryGirl中是否有任何方法可以创建对象列表,但具有不同的特定属性并且不重复相同的行?谢谢!
答案 0 :(得分:3)
厂:
FactoryGirl.define do
factory :user do
name 'Name'
password 'password'
email 'email@example.com'
factory :boolean_user
some_boolean_flag true
end
end
end
测试
['', 'email@example.com'].each do |email|
FactoryGirl.create(:user, email: email)
FactoryGirl.create(:boolean_user, email: email)
end
这里有一个注释,我故意重新发布'email@example.com',因为我喜欢我的工厂是通过验证所需要的。我不喜欢依赖工厂的内容来通过测试。我将始终专门调用我需要的数据。