FactoryBot:多次创建相同的对象

76

在我的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个回答

139

1
如果我想创建多个对象,例如 FactoryGirl.create(:model_1, :type => "something"),该怎么办? - usha
4
请查看文档,您可以将参数哈希作为第三个参数传递。 - apneadiving

15
FactoryBot.create_list :factory_name, 2, attribute_name: 'value'

简单易行的移动方式。

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


8

不确定自回答发布以来是否有更新,但现在你需要执行以下操作:

FactoryBot.create_list(:model_1, 3)

请参考入门指南中的多记录创建或构建部分。


4
如果您需要为带验证的模型执行此操作,我在测试中能够做到以下内容。
10.times do |i|
  create(
    :object,
    property: i
  )
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接