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