[RUBY] Créez plusieurs instances ensemble à partir de FactoryBot avec RSpec à l'aide de create_list

Par exemple, supposons que la fabrique de «note» soit définie comme suit.

factory/notes.rb


FactoryBot.define do
  factory :note do
    title { 'sample-note' }
    description { 'sample-description' }
  end
end

Lorsque vous souhaitez créer 5 instances note dans le test, il est difficile de créer une par une comme indiqué ci-dessous.

spec/system/xxx_spec.rb


RSpec.describe 'yyyy' do
  let(:note1) { create(:note) }
  let(:note2) { create(:note) }
  let(:note3) { create(:note) }
  let(:note4) { create(:note) }
  let(:note5) { create(:note) }
  ...
end

Si vous utilisez create_list ici, vous pouvez créer toutes les instances de notes en même temps.

spec/system/xxx_spec.rb


RSpec.describe 'yyyy' do
  notes = create_list(:note, 5)
  ...
end

Spécifiez la fabrique d'origine dans le premier argument et le numéro à créer dans le deuxième argument. (La partie notes = peut être omise)

En passant, il est également possible d'écraser certains attributs.

spec/system/xxx_spec.rb


RSpec.describe 'yyyy' do
  notes = create_list(:note, 5, title: 'Hello, World')
  ...
end

c'est tout.

Recommended Posts

Créez plusieurs instances ensemble à partir de FactoryBot avec RSpec à l'aide de create_list
[RSpec] Test unitaire (avec gem: factory_bot)