允许mocks(double(“object”))响应:call或:send,就像提供的方法一样?

时间:2015-09-24 21:37:36

标签: ruby-on-rails rspec

在一个小的重构模式中,我有一堆测试有两倍的方法调用,例如:

connection = double("api_connection", create_thing: double("thing"))

在此示例中,调用connection.create_thing会按预期返回thing double。

但是,我现在更改了代码,以便实际代码运行如下:

connection.send(:create_thing)

这导致了一系列错误:

Double "api_connection" received unexpected message :call with (:create_thing)

由于这是一个重构,我很谨慎地修复测试双打来响应调用。有没有办法设置这些双打接受:call,就像他们接受传递给:call的任何方法一样?

1 个答案:

答案 0 :(得分:0)

嗯,结果是 PEBCAK 错误。

:call不是ruby对象方法 - 我打算使用的是:send。用我:sends的{​​{1}}替换我的代码,导致一切正常。

好事我没有尝试'修复'测试 - 他们正确地失败了。