精简代码:
class Object
def foo
(bar / 100).round(2)
end
def bar
self.some_integer
end
end
我想测试foo调用bar,以便我的规格看起来像这样
it 'calls #bar upon self' do
expect(@object).to receive(:bar)
@object.foo
end
不幸的是,该规范然后失败了,因为调用@object.foo
时#bar
为nil并且除法失败。 #bar
不可能返回之前确保的nil值。
如何正确测试呢?
答案 0 :(得分:1)
您应该声明此测试期望哪个bar
值:
expect(@object).to receive(:bar).and_return(10)
编辑
您还可以(感谢@meta):
expect(@object).to receive(:bar).and_call_original