我对在rspec测试中截取figaro有问题。
我有如下代码:
class User < ActiveRecord::Base
def ce_url_link
path = Figaro.env.online_url || Figaro.env.root_url + '/online'
"#{path}/#{ce_code}"
end
end
describe 'ce_url_link' do
let(:user) { create(:user) }
context 'when Figaro.env.online_url is not present' do
it 'uses Figaro.env.root_url as a path' do
allow(Figaro.env).to receive(:online_url).and_return(nil)
end
end
end
当我添加一些expectation spec figaro.env.online_url时,返回的结果与application.yml中的相同。为什么会这样?
最佳答案
你还没有把它当替身。
describe do
before do
stub_const("Figaro", double)
allow(Figaro).to receive_message_chain(:env, :foo_bar) { :yay }
end
it do
expect(Figaro.env.foo_bar).to eq :yay
end
end
关于ruby-on-rails - 使用rspec stub Figaro,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31300090/