【FactoryBot】【trait】を使って、わかりやすくテストデータをつくる


はじめに

Traitsを使うと、

spec/requests/api_spec.rb
 let!(:words_starting_with_ruby) { create_list(:product_suggest, 6, :ruby) }
  let!(:word_starting_with_rails) { create(:product_suggest, :rails) }
  let!(:api_key) { Rails.application.credentials.api[:API_KEY] }

上の

create_list(:product_suggest, 6, :ruby)

create(:product_suggest, :rails)

の:ruby, :railsといったようにステータスを指定してテストデータを作ることができ、使いやすい。

定義

spec/factories/product_suggests.rb
FactoryBot.define do
  factory :product_suggest, class: "Product::Suggest" do
    trait :ruby do
      sequence(:keyword, "ruby-keyword_1")
    end

    trait :rails do
      keyword { "rails-keyword" }
    end
  end
end
trait :ruby do
  sequence(:keyword, "ruby-keyword_1")
end

などのようにステータスごとの内容を定義する。

ちなみに、

sequence(:keyword, "ruby-keyword_1")

とすると、データ作成毎に末尾の数値がインクリメントする。

終わりに。

最後まで読んで頂きありがとうございます
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。