CircleCIでよく分からないところでテストが落ちる
ローカルでは落ちないテストがCIだと落ちる... そんな時、原因はパッと思いつく限りでもいくつかあるだろうと思います。
原因と思われるもの
- 実行順序に依存しているテストがある
- 時刻系の処理で書き方の不備(特定の条件で意図した時刻にならない)
ローカルで実行しても通る場合の対処法
今回は 1. 実行順序に依存しているパターン
と思われるものの対応を模索してみます。
seed番号を指定して実行してみる
$ bundle exec rspec --seed シード番号
seed番号とは...??? 雑に言えばテストの実行番号です!
CircleCIで失敗したテストのseed番号を見てそれをローカルで実施してみると!
(seed番号は Randomized with seed 64781
の 64781
の部分)
今回の場合だと
$ bundle exec rspec --seed 64781
これでローカルで再現したらテストが落ちるべくして落ちてる可能性が高い! その結果から調査していくと良さそうです!!