FactoryGirl:多次创建同一个对象

时间:2013-08-26 13:52:52

标签: ruby-on-rails rspec factory-bot

在我的一个rspec测试中,我正在使用相同的工厂定义创建多个对象

例如

FactoryGirl.create(:model_1)
FactoryGirl.create(:model_1)
FactoryGirl.create(:model_1)

是否有factory_girl提供的方法可以在一行中执行此操作

我知道我可以做到

3.times {FactoryGirl.create(:model_1)}

但我正在寻找factory_girl为创建同一模型的多个对象提供的东西。

4 个答案:

答案 0 :(得分:97)

您可以创建这样的列表(因此一次创建x对象):

FactoryGirl.create_list(:model_1, 3)

文档lives here

答案 1 :(得分:6)

FactoryGirl.create_list :factory_name, 2, attribute_name: 'value'

简单而最好的移动方式。

如果不需要,可以忽略属性名称,而是使用序列。

答案 2 :(得分:3)

自发布答案后不确定是否已更新,但现在您将执行以下操作

FactoryGirl.create_list(:model_1, 3)

https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#building-or-creating-multiple-records

答案 3 :(得分:1)

如果您需要对带有验证的模型执行此操作,则可以在测试中执行以下操作。

10.times do |i|
  create(
    :object,
    property: i
  )
end