Я пытаюсь заглушить глобальную функцию, вызываемую из конструктора. Я использую Rspec и Rspec-mocks. Вот код для тестирования:
def foo
'foo'
end
class Bar
def initialize
@bar = foo
end
def bar
@bar
end
end
А вот и тест:
describe 'bar'
it 'calls foo' do
expect(self).to receive(:foo) { 'bar' }
expect(Bar.new.bar).to eq('bar')
end
end
Тест не пройден со следующим сообщением:
Failure/Error: expect(Bar.new.bar).to eq('bar')
expected: "bar"
got: "foo"
(compared using ==)
Как отключить глобальную функцию foo
?
PS: expect(self).to receive(:foo) { 'bar' }
работает должным образом, если foo
вызывается из другой глобальной функции.