在开发环境中运行的所有测试相关任务 - Rails 3

时间:2012-08-27 22:48:22

标签: ruby-on-rails ruby-on-rails-3 testing development-environment environment

当我运行应该在测试环境中运行的任务时,它正在开发中运行。其中包括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

2 个答案:

答案 0 :(得分:0)

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

中的spec_helper

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

可在此处找到修复程序:

How to use the test database with Capybara?

答案 1 :(得分:0)

解决方案是使用ENV["RACK_ENV"]而不是我尝试过的其他选项。我还不确定为什么其他的不起作用,但我打算把这个问题解决。

这么简单......