元記事はこちら: http://jeffkreeftmeijer.com/2010/making-rspec-stop-operation-immediately-after-failing/
(翻訳の公開と画像の利用は本人より許諾済みです)
Jeffさんのその次のRSpecの記事もよろしければどうぞ。
【翻訳】Fuubar: instafailing な RSpec プログレスバーフォーマッタ
翻訳の間違い等があればブログコメントやTwitterなどで遠慮無くご指摘ください。
RSpecでテストが失敗したら
即停止して結果を出力
RSpec で全てのテストスイートを走らせていて、最初か二番目で spec が失敗したと想像してみて欲しい。その後も走る spec が約200は残っているが、あなたはすぐにでも最初の失敗を修正するのに没頭したい。あなたは多分、それらを修正するための failure の詳細を知るために、spec の実行に割り込もうとするはずだ、そうだろう?
ほとんどの時間こうして作業しているわけだが(Selenium を使っている時、なんらかの問題で実行に割込みをかけるだろう)、もし RSpec が最初の failure で自動的に停止し結果を出力してくれたらすごくないだろうか?
rspec-users グループの3年前のスレッド以外には、役立つデータはほとんど見つからなかったので、私自身で書き始めることにした。
Fail-Fast
私は RSpec のソースを捜索し始め、そして偶然にも Relish により生成された RSpec のドキュメントを見つけた。そこでは、rspec-core 2.0.0.rc から fail_fast の設定オプションが導入されていることがわかった。それはまさに私が達成したかったことをやってくれる。
この fail_fast オプションは、spec が最初に失敗したときに RSpec をすぐさま停止させて failure の詳細を出力し、spec の失敗を修正するのにいい感じに速度を加速させてくれる。使い方は極々簡単だ:
# spec/spec_helper.rb RSpec.configure do |c| c.fail_fast = true end
コマンドラインサポート
あなたは時々 fail_fast オプションをなしにして、テストスイート全体を走らせたいとも思っているだろうが、spec/spec_helper.rb に現実にはいいオプションが存在しない。だから私は、あなたがいつでもそれをしたい時に出来るよう、コマンドラインオプションを追加した:
$ bundle exec rspec spec/ --fail-fast .F Failures: 1) Swinger should set the Capybara driver Failure/Error: Capybara.current_driver.should_not == :rack_test Finished in 0.00479 seconds 2 examples, 1 failure
この --fail-fast オプションは、先日リリースされた RSpec 2.1 にのみ含まれているので、アップデートを忘れないように。
0 件のコメント:
コメントを投稿