title: Call original method from spy
body: <p>I have a service object, looking something like this:</p>
  
  <pre><code>class Service
    def call
      do_something if anything
    end
  
    private
  
    def do_something
      # do something
    end
  end
  </code></pre>
  
  <p>I want to test that <code>do_something</code> is called under certain circumstances.</p>
  
  <p>I tried to write something like this:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>Obviously that doesn't work, 'cause I didn't stub <code>call</code> method for <code>service</code>. However, if I use <code>service = instance_double('Service', call: true)</code> it doesn't call <code>call</code>, so <code>do_something</code> is never got called.</p>
  
  <p>I'm looking for something like <code>allow(service).to receive(:call).and_call_original</code>, if it's possible (maybe with replacing <code>instance_double</code> with <code>object_double</code> which makes more sense in that case. Is there anything like this?</p>