我有这样一个类:
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
的实际作用,我无法对此提出建议。