Jam*_*sen 11 ruby testing ruby-on-rails environment-variables
我正在尝试测试一些特定于环境的设置(中间件是特定的,但似乎并不重要),但我无法让测试在正确的环境中运行.症状:
ruby test/unit/my_test.rb,一切都很好,因为它做的第一件事是require 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:unitsrake 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
Run Code Online (Sandbox Code Playgroud)
我甚至尝试:set_test_env为每个测试任务创建一个单独的任务,以便我确信它会在每个测试任务之前被调用而不是仅仅调用一次.仍然没有骰子.它确实被调用,并且环境在开始时是正确的,config/environment.rb但内部出现问题.
我没有电话ENV['RAILS_ENV']在任何地方设置我的代码.
为了给你一个完整的答案,我将不得不看看代码,但我会尝试给你一些可能有用的线索.
首先,rake test和所有其他的变种(test:units,test:functionals等)的工作方式如下
test在当前环境中执行任务(默认情况下是开发),这就是为什么development.rb总是被读取.ps或验证它pstree),这test_helper.rb是源和环境设置为test的位置.当你运行时ruby test/unit/my_test.rb,第一步被跳过,所以看起来问题就在那里.也许你做的事情development.rb对子进程有副作用?
在 test_helper.rb 文件的顶部我有代码
ENV["RAILS_ENV"] = "test"
Run Code Online (Sandbox Code Playgroud)
如果没有该行,那么系统问题将在默认环境(即开发)中运行。
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |