.env没有在带有rspec的Rails中加载到测试环境中

DMH*_*DMH 8 rspec ruby-on-rails environment-variables

gem 'dotenv-rails', '~> 0.9.0'用来将环境变量加载到Rails 4.0.5应用程序中.我有.env文件和.env.test.一切都在开发中运行良好,但是当涉及到测试时,我使用rspec,它无法设置环境变量.

我在测试环境中进入了Rails控制台,我可以看到它们被设置为nil.

有关如何在测试中加载dotenv的任何提示?

Mik*_*e T 17

这是一个迟到的答案,但对于任何可能发现它有用的人,请将其添加到 spec_helper.rb

require 'dotenv'
Dotenv.load('.env')
Run Code Online (Sandbox Code Playgroud)

此外,Dotenv.load可以接受列表,例如:

Dotenv.load(
  '.env.local',
  '.env.test',
  '.env'
)
Run Code Online (Sandbox Code Playgroud)


Der*_*rek 5

如果您有测试特定的环境配置,您可以使用Dotenv.overload覆盖其他环境配置。只需将以下内容添加到您的spec_helper.rbrails_helper.rb.

require "dotenv"
Dotenv.overload ".env.test" 
Dotenv.overload ".env.test.local"
Run Code Online (Sandbox Code Playgroud)


DMH*_*DMH 2

Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__))
Run Code Online (Sandbox Code Playgroud)

在研究 Paritosh 的答案后,我发现该文件需要根据环境指定。