RSpecセットアップ
RSpec 3.10.0、RSpec Rails 4.0.2、Fuubar 2.5.1、factory_bot 6.1.0、factory_bot_rails 6.1.0、spring-commands-rspec 1.0.4で確認。
以下のGemをインストールする。
group :development, :test do
  # Fixture
  gem 'factory_bot_rails'
  # テストの進捗をプログレスバーで表示するgem
  gem 'fuubar'
  gem 'rspec-rails', '~> 4.0.2'
end
group :development do
  # RSpecの起動高速化のために必要
  gem 'spring-commands-rspec'
end
bin/rails generate rspec:installでセットアップする。不要なので、minitestのtestディレクトリは削除しておく。
spec/rails_helper.rbのRSpec.configureのブロック内に以下のように追記する。
RSpec.configure do |config|
  # 省略...
  # travel_to('2021-1-1 00:00:00') { 指定時間に時間停止させて実行したいテスト }
  # freeze_time { 時間停止させて実行したいテスト }
  # などで時間を止めてテストができる
  config.include ActiveSupport::Testing::TimeHelpers
  # FactoryBotのメソッドをクラスを省略して呼べるようにする
  config.include FactoryBot::Syntax::Methods
end
.rspecファイルを以下の内容にする。
--require spec_helper
--format Fuubar
--order rand
--seed <%= rand(1..100000) %>
--color
bin/spring binstub rspecを実行しbin/rspecファイルを作る。SpringによってRailsのコード読み込みがキャッシュされるためRSpecの起動が速くなる。bundle exec rspecとbin/rspecで「Finished in n.nn seconds (files took N.NN seconds to load)」の表示を比べてみるとよくわかる(手元の環境ではfile loadに5秒ぐらいの差がでる)。
Springと連携している場合、--order randを指定してもseedが固定されてしまうので--seed <%= rand(1..100000) %>を指定してseed値がランダムになるように指定する必要がある。