.env 未在 Rails 和 rspec 的测试环境中加载
.env not being loaded in test environment in Rails with rspec
我正在使用 gem 'dotenv-rails', '~> 0.9.0'
将环境变量加载到 Rails 4.0.5 应用程序中。我有一个 .env 文件和一个 .env.test。在开发中一切正常,但是在测试时,我使用 rspec 进行测试,它无法设置环境变量。
我在测试环境中进入 Rails 控制台,我可以看到它们设置为 nil。
关于如何让 dotenv 在测试中加载的任何提示?
将此行放在 Dotenv::Railtie.load
中的 rspec 设置或您要加载点环境文件的任何页面。
Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__))
在研究 Paritosh 的回答后,我发现需要根据环境指定文件。
这是一个迟到的答案,但如果有人觉得它有帮助,请将其添加到 spec_helper.rb
require 'dotenv'
Dotenv.load('.env')
此外,Dotenv.load 可以接受一个列表,例如:
Dotenv.load(
'.env.local',
'.env.test',
'.env'
)
如果你有测试特定的环境配置,你可以使用Dotenv.overload
覆盖其他环境配置。只需将以下内容添加到您的 spec_helper.rb
或 rails_helper.rb
.
require "dotenv"
Dotenv.overload ".env.test"
Dotenv.overload ".env.test.local"
我正在使用 gem 'dotenv-rails', '~> 0.9.0'
将环境变量加载到 Rails 4.0.5 应用程序中。我有一个 .env 文件和一个 .env.test。在开发中一切正常,但是在测试时,我使用 rspec 进行测试,它无法设置环境变量。
我在测试环境中进入 Rails 控制台,我可以看到它们设置为 nil。
关于如何让 dotenv 在测试中加载的任何提示?
将此行放在 Dotenv::Railtie.load
中的 rspec 设置或您要加载点环境文件的任何页面。
Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__))
在研究 Paritosh 的回答后,我发现需要根据环境指定文件。
这是一个迟到的答案,但如果有人觉得它有帮助,请将其添加到 spec_helper.rb
require 'dotenv'
Dotenv.load('.env')
此外,Dotenv.load 可以接受一个列表,例如:
Dotenv.load(
'.env.local',
'.env.test',
'.env'
)
如果你有测试特定的环境配置,你可以使用Dotenv.overload
覆盖其他环境配置。只需将以下内容添加到您的 spec_helper.rb
或 rails_helper.rb
.
require "dotenv"
Dotenv.overload ".env.test"
Dotenv.overload ".env.test.local"