我有一个测试双,我希望能够收到任何消息。
我知道我可以期待双重接收某个消息并返回如下值:
foo = double()
allow(foo).to receive(:bar) { "Foobar" }
我还可以允许foo
使用#as_null_object
接收任何消息,例如:
foo = double()
foo.as_null_object
还有其他语法吗?似乎我应该能够做到这样的事情:
allow(foo).to receive(:anything)
答案 0 :(得分:3)
allow
和expect
方法可用于存根方法/设置对特定方法的期望。使用null object pattern扩充对象是完全不同的,因此使用不同的方法调用。
请注意,您通常不应在通过特定测试测试的区域中使用null对象 - 它意味着模仿系统的某些部分,这是测试代码的副作用,不能轻易存根。