LoginSignup
20
18

More than 5 years have passed since last update.

RSpec実行順序に影響するテストをデバッグする

Last updated at Posted at 2015-11-04

rspecで実行順序に依存してエラーが発生する場合、テスト実行時の seed番号 を指定することで実行順序を固定することができる。
特定の失敗した時の seed番号 をメモしておいて、コマンド実行時に指定することでその時の実行順序を維持してくれるので、デバッグが可能となります。

実行順序のデバッグ方法

rspec実行後に以下のように最後に出力される seed番号 を確認。

…省略
Finished in 1 minute 29.16 seconds (files took 11.54 seconds to load)
800 examples, 0 failures, 0 pending

Randomized with seed 1254  <=この 1254が seed番号

rspec コマンドのオプションで指定する場合

--order rand:[seed番号] 
OR 
--seed [seed番号]

(例)
bundle exec rspec spec/ --seed 12345

rake spec コマンドを使用する場合のSPEC_OPTS環境変数を利用する

SPEC_OPTS="--seed [seed番号]"

(例)
SPEC_OPTS="--seed 12345" bundle exec rake spec

参考サイト

関連するTips

実行順序とは違うのですが、rspecで特定のブロック(行数)を指定してテストを実行する方法

bundle exec rspec spec/controllers/users_controller_spec.rb:123

順番に依存するテストでエラーが出るまで実行し続ける方法

ただのシェルのワンライナーですが、bundle exec rspec spec/ コマンドを実行し続けてエラーが発生したら終了させる方法です。お昼行く前に流して返ってきたらテストが落ちているはず、、きっと。。

while true; do bundle exec rspec spec/; if [ $? -ne 0 ]; then echo "Error"; break; fi done

以上、備忘録のため。。。

20
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18