我正在使用factory_girl在我的测试中创建对象,这是我工厂的一个例子:
factory :user do
name "John"
surname "Doe"
trait :with_photo do
ignore do
photo_count 1
end
after(:create) do |user, evaluator|
FactoryGirl.create_list(:photo, evaluator.photo_count)
end
end
end
所以我可以创建一个像这样的照片的用户:
FactoryGirl.create(:user, :with_photo)
或没有照片:
FactoryGirl.create(:user)
或创建用户列表:
FactoryGirl.build_list(:user, 5)
但是,如果我想用照片创建其中五个用户,我怎么能建立一个具有特征的用户列表(特征为:with_photo
)?
答案 0 :(得分:43)
这不行吗?它应该......
FactoryGirl.build_list(:user, 5, :with_photo)
答案 1 :(得分:2)
您还可以将多个特征传递给create_list
和build_list
示例;
factory :user do
name { "Friendly User" }
trait :male do
name { "John Doe" }
gender { "Male" }
end
trait :admin do
admin { true }
end
end
# creates 3 admin users with gender "Male" and name "Jon Snow" using the admin and male trait
build_list(:user, 3, :admin, :male, name: "Jon Snow")
create_list(:user, 3, :admin, :male, name: "Jon Snow")
只需确保特征出现在要创建的记录数之后,最后一个参数是将覆盖record属性的哈希。