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')
以上です。
他の使い方を覚えたら随時更新していきます。それでは。