Expect to Receive and Call to Original
In integration specs, it is preferable to call the original method when setting up an expectation on an object to receive an invocation of that method. This way, the method isn’t stubbed out but instead will still be invoked. Any downstream effects of calling that method won’t be hidden.
class Calculator def self.add(x, y) x + y end end
Should be tested like this:
require 'calculator' RSpec.describe "and_call_original" do it "responds as it normally would" do expect(Calculator).to receive(:add).and_call_original expect(Calculator.add(2, 3)).to eq(5) # any bugs inside of #add won't be hidden end end
This code example is taken from: Relish - Calling the original implementation