【问题标题】:All test related tasks running in development envrionment -- Rails 3在开发环境中运行的所有测试相关任务——Rails 3
【发布时间】:2012-08-27 22:48:21
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    在您的spec_helper 中将此行ENV ||= "test" 更改为ENV = "test"

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

    可以在这里找到修复:

    How to use the test database with Capybara?

    【讨论】:

    • 我正在使用 Test:Unit,但在我的 test_helper 顶部,我尝试了 ENV["RAILS_ENV"] = "test"RAILS_ENV = "test"ENV = "test"。似乎都没有工作。另外,我没有同时运行服务器(我不认为)。我跑了top 并没有看到任何看起来像rails 服务器的东西。另外,我在链接页面上尝试了修复,但没有任何区别
    【解决方案2】:

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

    这么简单……

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      相关资源
      最近更新 更多