web-dev-qa-db-fra.com

FactoryBot: créez plusieurs fois le même objet

Dans l'un de mes tests rspec, je crée plusieurs objets à partir de la même définition d'usine

Par exemple

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

Existe-t-il une méthode qui factory_bot prévoit de le faire sur une seule ligne

Je sais que je peux faire

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

Mais je cherche quelque chose qui factory_bot permet de créer plusieurs objets du même modèle.

Remarque: FactoryBot s'appelait à l'origine FactoryGirl

54
usha

Vous pouvez créer une liste comme celle-ci (donc créer x objets à la fois):

FactoryBot.create_list(:model_1, 3)

Documentation vit ici .

Remarque: FactoryBot s'appelait à l'origine FactoryGirl

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

Une façon simple et optimale de se déplacer.

Vous pouvez ignorer les noms d'attribut si vous n'en avez pas besoin et utiliser plutôt la séquence.

7
Nishutosh Sharma

Je ne sais pas si cela a été mis à jour depuis la publication de la réponse, mais maintenant vous feriez ce qui suit

FactoryBot.create_list(:model_1, 3)

voir Mise en route

4
cromac

Si vous avez besoin de le faire pour un modèle avec validation, j'ai pu faire ce qui suit dans mon test.

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