はじめに
先日、RSpecでテストを書いていた際に、テストデータをまとめて作成したいなーと思って調べたので、ご参考になれば。
create_listメソッドとは
create_listメソッドとは、ファクトリに定義しているテストデータを、配列としてまとめて取得することができます。
使い方
spec/factories/tasks.rb
FactoryBot.define do
factory :article do
sequence(:title, "title_1")
sentence { "sentence" }
status { :todo }
association :user
end
end
ファクトリに上記のような定義がある場合、
例えば、3つのarticleインスタンスの入ったテストデータがほしいとき、下記のように定義することで取得できます。
articles = create_list(:article, 3) #変数articlesに3つのtaskインスタンスの配列が入っている
また、明示的に値を渡したりトレイトを使うことで、特定のカラムを上書きすることもできます。
articles = create_list(:article, 3, :doing, title: 'new_title')
# :doingはtrait、titleは上書き
つまり、抽象化するとこんな感じです↓
create_list(<ファクトリ名>, <インスタンスの数>, <traitや上書きしたい項目>)
#戻り値は配列
参考
factory_bot - create_listメソッドの使い方
※間違いなどあればコメントください!