67

在我的 RSpec 测试之一中,我从同一个工厂定义创建多个对象

例如

FactoryBot.create(:model_1)
FactoryBot.create(:model_1)
FactoryBot.create(:model_1)

是否有一种方法factory_bot可以在一行中执行此操作

我知道我能做到

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

但我正在寻找factory_bot能够创建同一模型的多个对象的东西。

注意:FactoryBot 原名为 FactoryGirl

4

4 回答 4

126

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

FactoryBot.create_list(:model_1, 3)

文档位于此处

注意:FactoryBot 原名为 FactoryGirl

于 2013-08-26T13:54:14.353 回答
11
FactoryBot.create_list :factory_name, 2, attribute_name: 'value'

简单且最佳的移动方式。

如果不需要相同的属性名称,您可以忽略,并使用序列代替。

于 2016-09-14T11:40:28.447 回答
5

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

FactoryBot.create_list(:model_1, 3)

入门

于 2015-07-24T07:28:09.040 回答
4

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

10.times do |i|
  create(
    :object,
    property: i
  )
end
于 2019-01-01T18:28:01.983 回答