いくつかの環境固有の設定をテストしようとしています (特定のミドルウェアですが、問題ではないようです) が、正しい環境でテストを実行するのに問題があります。症状:
- を実行すると、最初に require が実行され、環境が に設定され、Rails 環境が読み込まれる
ruby test/unit/my_test.rb
ため、すべて問題ありません。test/test_helper.rb
"test"
- を実行する
rake test
と、最初のバッチ (機能) は正常に実行されますが、2 番目のバッチ (ユニット) は失敗します。失敗は、ENV['RAILS_ENV]
何らかの理由でバッチ間で設定が解除されconfig/environment.rb
、何も設定されていないことがわかり、デフォルトの を使用することです"development"
。環境はconfig/environment.rb
、そのファイルの構成ブロックの先頭と先頭では正しいですが、最後まで間違っています。を使用するputs
か削除するconfig/development.rb
と、ファイルが見つからないことがわかります。 - を実行する
rake test:units
と、 の 2 番目のバッチと同じ問題が発生しますrake test
(つまり、すべて失敗します)。 - を実行する
rake test:functionals
と、の場合と同じになりますrake test:units
rake test RAILS_ENV=test
またはrake test:units RAILS_ENV=test
またはを実行するrake test:functionals RAILS_ENV=test
と、すべて問題ありません。
私が試したことがまったく機能しないことの1つは、次のとおりです。
# in Rakefile:
task :set_test_env { ENV['RAILS_ENV'] = 'test' }
Rake::Task[:test].prerequisites.unshift :set_test_env
# and similarly for other test tasks
テスト タスクごと:set_test_env
にこれらのタスクを個別に作成して、一度だけではなく各タスクの前に呼び出されるようにしました。まだサイコロはありません。それは呼び出され、環境は最初は正しいですが、内部で何かがうまくいきません。config/environment.rb
ENV['RAILS_ENV']
コードに設定する呼び出しはどこにもありません。