RailsのRspecでランダムに落ちるテストを再現したい

こんにちは!kossyです!




さて、今回はRailsでテストツールにRspecを採用している際に、
ランダムに落ちるテストをseed値を指定することでもう一度再現する方法について、
ブログに残してみたいと思います。




環境
Ruby 2.6.3
Rails 6.0.3
MacOS catalina



設定

seed値を設定してRspecを実行するために、spec/spec_helper.rbを編集します。

  config.order = :random # ファイルの上から順番に実行するのではなくランダムな順序で実行できるようにする
  Kernel.srand config.seed # seed値を指定してテストを実行できるようにする

上記の設定を行うと、

Finished in 0.32274 seconds (files took 7.83 seconds to load)
4 examples, 0 failures

Randomized with seed 40251

のように、テストの実行が終了するとseed値が表示されるようになります。

$ bundle exec rspec --seed 40251
    • seedオプションにseed値を指定することで、同条件で実行できます。


勉強になりました。