RSpecテスト作成時に使う create_listについて

こんにちは。スバルです。

今回は、RSpecで使う便利メソッドcreate_listについて学習します。

複数のインスタンスを同時に使える便利メソッドで、下記のように同じファクトリから別のインスタンスを複数作りたい時に使います。



spec/factories/optime.rb FactoryBot.define do factory :optime do title { 'sample-optime' } content { 'sample-content' } end end
RSpec.describe 'yyyy' do
  let(:optime1) { create(:optime) }
  let(:optime2) { create(:optime) }
  let(:optime3) { create(:optime) }
  let(:optime4) { create(:optime) }
  let(:optime5) { create(:optime) }
  ...
end

いちいち定義するのって面倒、、そんな時はcreate_listを使っちゃいましょう。

RSpec.describe 'yyyy' do
  optimes = create_list(:optime, 5)
  ...
end

ちなみに下記のようにして属性を上書きすることも可能です。

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

RSpecでFactoryBotから複数のインスタンスをまとめて作成する【create_listを使用】 - Qiita