1

当我运行一个应该在测试环境中运行的任务时,它正在开发中运行。这包括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 envrailties 更改为默认为“test”,则环境变为 test。那是

def env
  @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end
4

2 回答 2

0

将此行更改ENV ||= "test"ENV = "test"spec_helper

如果您使用 Capybara 并且在开发模式下运行 rails 服务器,那么 Capybara 将使用它而不是启动测试实例。

可以在这里找到修复:

如何在 Capybara 中使用测试数据库?

于 2012-08-28T08:05:38.483 回答
0

解决方案是使用ENV["RACK_ENV"]而不是我尝试过的其他选项。我仍然不确定为什么其他人没有工作,但我会称这个问题已解决。

很简单...

于 2012-09-04T22:19:13.417 回答