Reputation: 29369
In one of my RSpec test, I am creating multiple objects from the same factory definition
Eg
FactoryBot.create(:model_1)
FactoryBot.create(:model_1)
FactoryBot.create(:model_1)
Is there a method that factory_bot
provides to do this in one line
I know that I can do
3.times {FactoryBot.create(:model_1)}
But I am looking for something that factory_bot
provides for creating multiple objects of the same model.
Note: FactoryBot was originally named FactoryGirl
Upvotes: 76
Views: 59866
Reputation: 133
Not sure if this has been updated since the answer was posted, but now you would do the following
FactoryBot.create_list(:model_1, 3)
see Getting Started
Upvotes: 8
Reputation: 1936
FactoryBot.create_list :factory_name, 2, attribute_name: 'value'
Simple and best way to move.
You can ignore the attribute names if not needed the same, and use sequence instead.
Upvotes: 15
Reputation: 115541
You can create a list like this (hence create x objects at once):
FactoryBot.create_list(:model_1, 3)
Documentation lives here.
Note: FactoryBot was originally named FactoryGirl
Upvotes: 141
Reputation: 675
If you need to do this for a model with validation, I was able to do the following in my test.
10.times do |i|
create(
:object,
property: i
)
end
Upvotes: 4