最近RSpecを使い始めたので、導入手順をメモ
環境
Rails 6.0.3.6
MySQL
Docker
--skip-testを指定して new
Gem
.
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'capybara'
  gem 'rspec-rails'
  gem 'factory_bot_rails'
end
.
webmock等は一旦入れない予定で。
RSpecをインストール
bin/rails g rspec:install
Running via Spring preloader in process 167
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb
上のように4つ作成される。
- 
.rspec : RSpec用の設定ファイル 
- 
spec : スペックファイルを格納するディレクトリ 
- 
spec/spec_helper.rb, spec/rails_helper.rb : RSpecでカスタマイズするヘルパーファイル 
テスト用のDB準備
bin/rails db:migrate RAILS_ENV=test
RSpecの書式変更
--format documentation を追加することで、RSpecの出力を読みやすいドキュメント形式に変更することができる
--require spec_helper
--format documentation
FactoryBot設定追加
以下の様に設定することで、FactoryBotのメソッドの呼び出しが楽になる。
RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end
(例)
# 設定前
user = FactoryBot.create(:user)
# 設定後
user = create(:user)
rails_helper.rbに設定追加
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }がコメントアウトされているので、それを外す。
そうすることで、spec/support/配下のファイル を読み込むことができる。
require 'spec_helper'
.
.
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
.
RSpec.configure do |config|
 .
 .
rspec生成ファイルの定義を修正
プロジェクト作成時に--skip-testを指定していると、Minitestが作られないが、それと同時にRSPecを導入しても、Model等を生成した時に、同時にrspecファイルを生成してくれないようになっているため設定する。
下記コードの一番上の行をコメントアウトにし、以下の様に設定を追加する。falseを設定してrspecファイルは自動生成されなくなる。
# config.generators.system_tests = nil
config.generators do |g|
  g.test_framework :rspec,
    fixtures: false,
    routing_specs: false
end
RSpecを起動してみる
ここまで設定したら、動作確認してみましょう
bundle exec rspec
No examples found.
Finished in 0.00231 seconds (files took 0.17073 seconds to load)
0 examples, 0 failures
テストファイルは書いていませんが、RSpecが動作していることは確認できました
後日、capybaraの設定等を追加します
