ずみーBlog

元クラゲ研究者(見習い)の92年生まれがエンジニアを目指しながら日々寄り道するブログです。

FactoryBotとFaker

みなさま、おはようございます。ずみーです。

RSpecでテストデータの自動作成を行ってくれる、FactoryBot)とFakerの導入と使い方についての備忘録です。

ちなみに、Wikiにはこうありました。

Factory Bot(元々はFactory Girlとして知られていました)は、Rubyプログラミング言語用のソフトウェアライブラリで(以下略)

Factory Girlって日本で言うリケジョみたいなイメージだったんでしょうか。

導入

まずはGemを導入します。

Gemfile

group :development, :test do
  gem 'factory_bot_rails'
  gem 'faker'
end
bundle install

FactoryBotファイル作成

spec/factories/配下に、テストデータの雛形を作成していきます。

ユーザーの例

spec/factories/user.rb

FactoryBot.define do
  factory :user do
    nickname {Faker::Name.initials(number: 2)}
    email {Faker::Internet.free_email}
    password {Faker::Internet.password(min_length: 6)}
    password_confirmation {password}
  end
end

投稿の例

spec/factories/posts.rb associationを記述すると、関連先データも一緒に生成してくれます。

FactoryBot.define do
  factory :post do
    title {Faker::Lorem.sentence}
    content {Faker::Lorem.sentence}
    image {Faker::Lorem.sentence}
    association :user
  end
end

テストコード内での呼び出し

_spec.rbファイルの中で、雛形を使ってテストデータを生成する時は、.buildメソッドを使います。

@user = FactoryBot.build(:user)

投稿にイメージファイルをアップロードする場合

@post = FactoryBot.build(:post)
@post.image = fixture_file_upload('public/images/test_image.png')

以上です。

他の使い方を覚えたら随時更新していきます。それでは。