Skip to main content

Partial doubles

When the verify_partial_doubles configuration option is set, the same argument and method existence checks that are performed for object_double are also performed on partial doubles. You should set this unless you have a good reason not to. It defaults to off only for backwards compatibility.

Doubling an existing object

Given a file named "spec/user_spec.rb" with:

class User
def save; false; end
end

def save_user(user)
"saved!" if user.save
end

RSpec.configure do |config|
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
end

RSpec.describe '#save_user' do
it 'renders message on success' do
user = User.new
expect(user).to receive(:wave).and_return(true) # Typo in name
expect(save_user(user)).to eq("saved!")
end
end

When I run rspec spec/user_spec.rb

Then the output should contain "1 example, 1 failure".