There's an echo in my head

日々のメモ。

ランダムに落ちるspecの修正で便利だったRSpecの2つの設定

最近開発していて便利だったのでメモっておく。

一つはorder。spec_helperが生成された直後は"random"に設定されていて、このときspecの実行順序が毎回ランダムに変わる。

ランダムに実行することで実行順序に依存して落ちるspecを見つけることができる(そのためには何度も繰り返す必要があるけども)。そして実行したときの乱数生成に使われたseedが全て回しきったときに表示され、これをorderに設定すれば再度同じ順序で実行できる

もう一つはfail_fast。これはテストが一つ落ちた時点で全体の実行を止めてくれる。デフォルトはfalseで、spec_helperを生成した直後は設定されていないので必要に応じて自分で記述する。

この2つを使って、何度かorder="random"でランダムに全体実行を繰り返して落ちたり落ちなかったりするspecを見つけたら、orderにそのときのseed値を、fail_fastにtrueを設定してひたすら修正とテストを繰り返す。こうすると順序に依存して落ちるspecも比較的修正しやすくなる。

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。