やったこと
Rails5 の rspec で forgery を使ってみます。
forgery はダミーデータを作成するのに使います。
名前、金額、日付など生成できます。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
$ gem list | grep rspec-rails
rspec-rails (3.8.2)
調査
Gemfile に追加 + インストール
Gemfile
group :development, :test do
...
gem 'forgery'
end
$ bundle install
rspec に記述 (FactoryBot)
今回データ作成に FactoryBot を使っているので、 こちらに forgery を導入してみます。
spec/factories/task.rb
FactoryBot.define do
factory :task do
name { Forgery(:name).first_name }
end
end
spec/models/task3_spec.rb
require 'rails_helper'
RSpec.describe Task, type: :model do
before do
@task = build(:task)
end
it 'テスト1' do
p @task.name
end
it 'テスト2' do
p @task.name
end
end
テスト実行
1回目
$ bundle exec rspec spec/models/task3_spec.rb -fd
Task
"Jason"
テスト1
"Sean"
テスト2
Finished in 0.01026 seconds (files took 0.9455 seconds to load)
2 examples, 0 failures
2回目
$ bundle exec rspec spec/models/task3_spec.rb -fd
Task
"Julie"
テスト1
"Justin"
テスト2
Finished in 0.01186 seconds (files took 0.91584 seconds to load)
2 examples, 0 failures
名前が生成されていることが分かります。
ただし、呼び出すために変わるので、データに依存するテストには利用できません。
とりあえずデータを埋めときたい時に利用するものみたいですね。