Ruby on rails 从rspec进行测试时,env为空

Ruby on rails 从rspec进行测试时,env为空,ruby-on-rails,rspec,Ruby On Rails,Rspec,我有一个使用env的控制器: a=env['some_key'] 然后,当使用rspec进行测试时,测试失败,因为env为空。 我尝试将其更改为: a=request.env['some_key'] 但它仍然失败了。我还试图将其存根: 允许(环境)接收(:[]),带有(“某些密钥”)和返回(“xxxx”) 也失败了 我在谷歌上搜索到一个帖子: 在那篇文章中,它没有说如何测试这种情况。有没有一种有效的方法来测试这一点?您正在寻找的是存根常量,而不是允许(…) 您能否共享控制器的代码片段,其中声明

我有一个使用env的控制器: a=env['some_key']

然后,当使用rspec进行测试时,测试失败,因为env为空。 我尝试将其更改为: a=request.env['some_key'] 但它仍然失败了。我还试图将其存根: 允许(环境)接收(:[]),带有(“某些密钥”)和返回(“xxxx”)

也失败了

我在谷歌上搜索到一个帖子:


在那篇文章中,它没有说如何测试这种情况。有没有一种有效的方法来测试这一点?

您正在寻找的是
存根常量,而不是
允许(…)


您能否共享控制器的代码片段,其中声明了env、rspec和故障?
env
请求。env
env
是不同的东西。具体的预期用例是什么?
class Test
  attr_reader :env

  def initialize
    @env = ENV['SOME_KEY']
  end
end

describe Test do
  subject(:test) { Test.new }

  before { stub_const('ENV', {'SOME_KEY' => 'mock'}) }

  it 'displays the correct environment variable' do
    expect(test.env).to eq('mock')
  end
end