最近開発していて便利だったのでメモっておく。
一つはorder
。spec_helperが生成された直後は"random"
に設定されていて、このときspecの実行順序が毎回ランダムに変わる。
ランダムに実行することで実行順序に依存して落ちるspecを見つけることができる(そのためには何度も繰り返す必要があるけども)。そして実行したときの乱数生成に使われたseedが全て回しきったときに表示され、これをorder
に設定すれば再度同じ順序で実行できる。
もう一つはfail_fast
。これはテストが一つ落ちた時点で全体の実行を止めてくれる。デフォルトはfalseで、spec_helperを生成した直後は設定されていないので必要に応じて自分で記述する。
この2つを使って、何度かorder="random"
でランダムに全体実行を繰り返して落ちたり落ちなかったりするspecを見つけたら、order
にそのときのseed値を、fail_fast
にtrueを設定してひたすら修正とテストを繰り返す。こうすると順序に依存して落ちるspecも比較的修正しやすくなる。