是否可以在 ActionDispatch::IntegrationTest 中更改 Rails ENV?

Is it possible to change Rails ENV in ActionDispatch::IntegrationTest?

ENV 变量值在 rails 应用程序的 config/application.yml 中设置。是否可以仅针对 ActionDispatch::IntegrationTest 中的特定测试用例进行更改?像这样:

class DummyTest < ActionDispatch::IntegrationTest
  context '...' do
    it '...' do
      ENV['API_URL'] = ...
    end
  end
end

我试过了,但似乎没有任何改变。谢谢

我认为您错过了 Rails 文档中的 creating-rails-environments 配置。

这应该可以解决您的问题,而无需猴子修补您的规格上的任何内容。

我还建议使用 dotenv gem 来帮助您处理环境变量。在您的情况下,您将至少拥有这些文件:

  • .env.development
  • .env.test

如果你真的想为特定测试更新一个值,我建议像建议的那样存根它 here