Я пытаюсь протестировать некоторые параметры, зависящие от среды (промежуточное ПО, чтобы быть конкретным, но это, похоже, не имеет значения), но у меня возникают проблемы с тем, чтобы тесты запускались в правильной среде. Симптомы:
- Если я запустил
ruby test/unit/my_test.rb
, все будет хорошо, потому что в первую очередь требуетсяtest/test_helper.rb
, который устанавливает среду в"test"
, а затем загружает среду Rails. - Если я запустил
rake test
, первая партия (функционалы) работает нормально, но вторая партия (единицы) терпит неудачу. Ошибка состоит в том, чтоENV['RAILS_ENV]
каким-то образом становится не установленным между партиями, тогдаconfig/environment.rb
видит, что ни один не установлен, и использует значение по умолчанию"development"
. Окружающая среда верна в началеconfig/environment.rb
и в начале блока конфигурации в этом файле, но неправильно до конца. Я могу сказать, используяputs
или удаливconfig/development.rb
, заставляя его не находить файл. - Если я запустил
rake test:units
, я получаю ту же проблему, что и вторая партия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
, все в порядке!
Одна вещь, которую я пробовал, которая не работает вообще, такова:
# 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']
в моем коде где угодно.