FactoryBotセットアップ、設定
factory_bot 6.5.0、factory_bot_rails 6.4.4で確認。
定義方法はFactoryBotの定義チートシートを参照。
利用方法はFactoryBotの利用方法チートシートを参照。
gemの導入
group :development, :test do
gem 'factory_bot_rails'
end
groupにdevelopmentが含まれているが、FactoryBot公式のConfigurationにそう書かれている。またFactoryBot公式のGeneratorsに関する説明にも書かれているが、developmentに含めることで bin/rails g model
などの実行時に対応するFactoryBotの定義ファイルも生成するようになる。
FactoryBotは基本的にtest環境でしか使われないが、development環境にも入っていると rails console
などで利用することができる。
# bin/rails console
app(dev)> FactoryBot.build(:user)
=>
#<User:0x0000ffff9687f898
id: nil,
name: "hoge",
created_at: nil,
updated_at: nil>
rakeタスクなどからも利用できるので、開発環境用のテストデータを作るというような用途で利用できる。
定義ファイル
FactoryBotの定義チートシート#定義ファイル を参照。
設定
以下のファイルを作成する。
# spec/support/factory_bot.rb
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
spec/rails_helper.rb
ファイルに以下の行を追加する。
# require 'rspec/rails' の行よりも後に追加すること
require 'support/factory_bot'
あるいは、パフォーマンス上の懸念がないのであれば以下の行のコメントアウトを外す。
# Rails.root.glob('spec/support/**/*.rb').sort_by(&:to_s).each { |f| require f }
この設定がなくとも、FactoryBot.build(:user)
のようにレシーバを指定すれば使えはする。しかし、rubocop-factory_bot
を入れているのであれば、FactoryBot/SyntaxMethodsで警告されるため、設定しておくべきである。