从rspec测试时,env为空

时间:2016-02-22 16:48:21

标签: ruby-on-rails rspec

我有一个控制器,其中使用了env:    a = env [' some_key']

然后在使用rspec进行测试时,测试失败,因为env为空。 我试着把它改成:   a = request.env [' some_key'] 但它仍然没有奏效。我也试图将其存根: 允许(ENV)。接收(:[])。with(" some_key")。and_return(" xxxx")

也失败了。

我用Google搜索了一个帖子: What is the difference between 'env' and 'request.env' in Rails Controller?

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

1 个答案:

答案 0 :(得分:0)

您要找的是stub_const而不是allow(...)

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