3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【FactoryBot】create_listで複数のインスタンスの配列を作成する【RSpec】

Last updated at Posted at 2021-04-22

はじめに

先日、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メソッドの使い方

※間違いなどあればコメントください!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?