我有一个控制器,其中使用了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?在那篇文章中它没有说明如何测试这种情况。有没有一种有效的方法来测试它?
答案 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