Ruby on rails 允许模拟(double(“object”)像提供的方法一样响应:call或:send?

Ruby on rails 允许模拟(double(“object”)像提供的方法一样响应:call或:send?,ruby-on-rails,rspec,Ruby On Rails,Rspec,在一个小的重构模式下,我有一堆测试,它们有两个用于清除方法调用的测试,例如: connection = double("api_connection", create_thing: double("thing")) 在本例中,调用connection.create\u thing将返回预期的thingdouble 但是,我现在更改了代码,使实际代码的运行方式如下: connection.send(:create_thing) 这导致了一系列错误: Double "api_connection

在一个小的重构模式下,我有一堆测试,它们有两个用于清除方法调用的测试,例如:

connection = double("api_connection", create_thing: double("thing"))
在本例中,调用connection.create\u thing将返回预期的
thing
double

但是,我现在更改了代码,使实际代码的运行方式如下:

connection.send(:create_thing)
这导致了一系列错误:

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

因为这是一个重构,所以我不愿意只修改测试的两倍来响应调用。有没有一种方法可以将这些double设置为接受
:call
,就像它们接受传递给
:call
的任何方法一样?

嗯,这是一个PEBCAK错误

:call
不是ruby对象方法——我打算使用的是
:send
。将我的代码替换为
:将
s发送到我的
:调用
s位置,使一切正常

幸好我没有尝试“修复”这些测试——它们没有正确地通过