Rspec双倍期待/允许任何事情

时间:2014-05-06 23:07:43

标签: rspec mocking stubbing

我有一个测试双,我希望能够收到任何消息。

我知道我可以期待双重接收某个消息并返回如下值:

foo = double()
allow(foo).to receive(:bar) { "Foobar" }

我还可以允许foo使用#as_null_object接收任何消息,例如:

foo = double()
foo.as_null_object

还有其他语法吗?似乎我应该能够做到这样的事情:

allow(foo).to receive(:anything)

1 个答案:

答案 0 :(得分:3)

allowexpect方法可用于存根方法/设置对特定方法的期望。使用null object pattern扩充对象是完全不同的,因此使用不同的方法调用。

请注意,您通常不应在通过特定测试测试的区域中使用null对象 - 它意味着模仿系统的某些部分,这是测试代码的副作用,不能轻易存根。