我有一个服务对象,看起来像这样:
class Service
def call
do_something if anything
end
private
def do_something
# do something
end
end
我想测试在某些情况下是否调用了do_something
。
我试图写这样的东西:
RSpec.describe Service do
it 'calls do_something' do
service = instance_double(Service)
service.stub(:do_something)
expect(Service).to receive(:new).and_return service
Service.new.call
expect(service).to have_received(:do_something)
end
end
[显然,这不起作用,因为我没有为call
存根service
方法。但是,如果我使用service = instance_double('Service', call: true)
,它不会调用call
,因此永远不会调用do_something
。
我正在寻找allow(service).to receive(:call).and_call_original
之类的东西(如果可能的话(也许用instance_double
代替object_double
,在这种情况下更有意义。是否有类似的东西?