/ #ruby #rails 

RSpecで失敗即終了したい時

痛恨!テスト失敗してた

RSpecでテストを実行した際、大量に失敗するのにテスト完了まで待つのはつらいです。 そんな時に便利なオプションがRSpecにはあります。

Fail Fast

最初の失敗があった時点でテストの実行が止まります。 同じような失敗が大量に出ているspecの修正などに便利です。

bundle exec rspec --fail-fast

パラメータで数値を渡すと、指定した回数失敗した時点で止めてくれます。

bundle exec rspec --fail-fast=3

Only Failures(RSpecバージョン3.3以上)

失敗したテストのみ実行してくれる便利機能です。結果の履歴を保存しておくための設定が必要になります。

spec/spec_heler.rb などに、

RSpec.configure do |c|
  c.example_status_persistence_file_path = "examples.txt"
end

を追加します。ファイルの保存場所はどこでもよいです。.txt ファイルはソース管理から除外します。

そして、2回目以降の実行時に、

bundle exec rspec --only-failures

とすることで、失敗したテストのみ再実行します。

--next-failures を指定すると、失敗したテストのみ実行し、かつ最初に失敗した時点でテストがとまります。

bundle exec rspec --next-failures