web-dev-qa-db-ja.com

FactoryBot:同じオブジェクトを複数回作成します

Rspecテストの1つで、同じファクトリー定義から複数のオブジェクトを作成しています

例えば

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

factory_botは、これを1行で行うことを提供します。

私ができることを知っている

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

しかし、私はfactory_botは、同じモデルの複数のオブジェクトの作成を提供します。

注:FactoryBotは元々FactoryGirlという名前でした

54
usha

次のようなリストを作成できます(したがって、x個のオブジェクトを一度に作成できます)。

FactoryBot.create_list(:model_1, 3)

ドキュメント ここにある

注:FactoryBotは元々FactoryGirlという名前でした

102
apneadiving
FactoryBot.create_list :factory_name, 2, attribute_name: 'value'

シンプルで最適な移動方法。

同じ名前が不要な場合は属性名を無視して、代わりにシーケンスを使用できます。

7

回答が投稿されてからこれが更新されたかどうかはわかりませんが、今は次のようにします

FactoryBot.create_list(:model_1, 3)

はじめに を参照

4
cromac

検証付きのモデルでこれを行う必要がある場合、テストで次のことができました。

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