Rails 5.1 で rails test と rails test:system の RAILS_ENV に関する挙動の違いメモ
RAILS_ENV が指定されている場合 rails test
コマンドと rails test:system
コマンドの挙動が違う。
おそらくそれぞれ rails command として実装されているか、rake タスクとして実装されているかによる違い。
rails test
で実行 → RAILS_ENV が test に上書きされて実行されるrails test:system
で実行 → RAILS_ENV に指定された環境で実行されるrails test:db
も同様
docker-compose.yml で RAILS_ENV=development としていたコンテナでシステムテストを実行して気づいた。
今はテスト実行のコマンドを rails test test/*
とすることで回避している。
(ちなみに rails test
がシステムテストを実行しないのは rails の意図した動作である。)
これは rails の意図した動作なのか、それとも意図していない動作なので rails/rails を直すべきなのか、またはコンテナに RAILS_ENV を指定しないべきなのか判断がつかなかったけれども、あとで忘れるといけないのでメモだけ残す。