Rspec 双重期望/允许任何事情

jor*_*ver 7 rspec mocking stubbing

我有一个测试替身,我希望能够接收任何消息。

我知道我可以期望 double 收到一条消息并返回一个像这样的值:

foo = double()
allow(foo).to receive(:bar) { "Foobar" }
Run Code Online (Sandbox Code Playgroud)

我还可以允许使用以下foo方式接收任何消息#as_null_object

foo = double()
foo.as_null_object
Run Code Online (Sandbox Code Playgroud)

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

allow(foo).to receive(:anything)
Run Code Online (Sandbox Code Playgroud)

sam*_*uil 3

allow方法expect可用于存根方法/设置对特定方法的期望。与空对象模式增强对象有很大不同,因此使用不同的方法调用。

请注意,通常不应在特定测试所测试的区域中使用 null 对象 - 它旨在模仿系统的某些部分,这些部分是测试代码的副作用,无法轻易进行存根。