如何测试创建实例的类方法



我有这样一个类:

class BaseService
def self.call(*args)
new(*args).call
end
end

我需要测试#self.call是否使用给定的参数创建新实例并发送它:调用消息。这怎么可能?提前感谢!

我会执行以下

let(:arguments) { [:foo, :bar] }
let(:base_service) { instance_double('BaseService') } 
before do 
allow(BaseService).to receive(:new).with(*arguments).and_return(base_service)
allow(base_service).to receive(:call).with(no_args)
end
it "does the expected thing" do
BaseService.call(*arguments)
expect(BaseService).to have_received(:new).with(*arguments).once
expect(base_service).to have_received(:call).once
end

另一个(也许更好的(选项可能是测试BaseService.call(*arguments)是否具有预期的输出或副作用。但因为你没有写new(*args).call的实际作用,我无法对此提出建议。

最新更新