从间谍那里调用原始方法

问题描述 投票:0回答:1

我有一个服务对象,看起来像这样:

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,在这种情况下更有意义。是否有类似的东西?

ruby rspec
1个回答
-1
投票
这是您要寻找的吗?
© www.soinside.com 2019 - 2024. All rights reserved.