当我运行应该在测试环境中运行的任务时,它正在开发中运行。其中包括rake test:(units/functionals/integration)
和rake db:test:prepare
。副作用是每次运行测试时它都会覆盖我的数据库。我重命名了开发数据库,现在它一直在抱怨它无法找到我的旧数据库(database.yml
中的数据库)。我require 'rails'
顶部的application.rb
正在设置环境。我错过了某种简单的配置吗?
编辑:如果我运行附加RAILS_ENV=test
的测试,它们将在测试环境中运行。但是,我实际上无法运行它们,因为我有待处理的迁移(所有这些)。运行rake db:test:prepare RAILS_ENV=test
会给我带来相同的待定迁移错误。
更新:数据库已迁移,我的测试正在进行中。我仍然觉得每次运行我的测试RAILS_ENV=test
都不是正确的方法
更新:我发现如果我将栏杆中的def env
更改为默认为“测试”,则环境将成为测试。那是
def env
@_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end
答案 0 :(得分:0)
将此行ENV ||= "test"
更改为ENV = "test"
spec_helper
如果您正在使用Capybara并且在开发模式下运行rails服务器,那么Capybara将使用它而不是启动测试实例。
可在此处找到修复程序:
答案 1 :(得分:0)
解决方案是使用ENV["RACK_ENV"]
而不是我尝试过的其他选项。我还不确定为什么其他的不起作用,但我打算把这个问题解决。
这么简单......