精简代码:
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 是零并且在分区中失败。这是不可能的 #酒吧 返回以前确保的零值。 如何正确测试?
@object.foo
#bar
#酒吧
你应该声明 bar 此测试所需的值:
bar
expect(@object).to receive(:bar).and_return(10)
Docs
编辑
你也可以(谢谢@meta):
expect(@object).to receive(:bar).and_call_original