当我运行一个应该在测试环境中运行的任务时,它却在开发中运行。这包括 rake test:(units/functionals/integration)
和 rake db:test:prepare
。副作用是每次我运行测试时它都会覆盖我的数据库。我重命名了开发数据库,现在它一直提示找不到我的旧数据库(database.yml
中的那个)。在我的 application.rb
顶部的 require 'rails'
中将环境设置为开发。我是否缺少某种简单的配置?
编辑:如果我运行附加了 RAILS_ENV=test
的测试,它们将在测试环境中运行。但是,我实际上无法运行它们,因为我有待处理的迁移(所有迁移)。运行 rake db:test:prepare RAILS_ENV=test
给我相同的挂起迁移错误。
更新:数据库已迁移,我的测试正在进行中。我仍然觉得每次使用 RAILS_ENV=test
运行我的测试并不是正确的方法
更新:我发现如果我将 railties 中的 def env
更改为默认为“test”,环境将变为 test。也就是
def env
@_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end
最佳答案
在 spec_helper
中将此行 ENV ||= "test"
更改为 ENV = "test"
如果您正在使用 Capybara 并让 rails server 在开发模式下运行,那么 Capybara 将使用它而不是启动测试实例。
修复可以在这里找到:
关于ruby-on-rails - 在开发环境中运行的所有测试相关任务——Rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150645/