Logo: Relish

  1. Sign in

Project: RSpec Mocks 3.6

`stub`

  • @allow-old-syntax

stub is the old way to allow messages but carries the baggage of a
global monkey patch on all objects. It supports the same fluent
interface for setting constraints and configuring responses. You can also pass stub a hash
of message/return-value pairs, which acts like allow(obj).to receive_messages(hash),
but does not support further customization through the fluent interface.

Background
Given
a file named "spec/spec_helper.rb" with:
RSpec.configure do |config|
  config.mock_with :rspec do |mocks|
    mocks.syntax = :should
  end
end
And
a file named ".rspec" with:
--require spec_helper
Scenarios
Stub a method
Given
a file named "spec/stub_spec.rb" with:
RSpec.describe "Stubbing a method" do
  it "configures how the object responds" do
    dbl = double
    dbl.stub(:foo).and_return(13)
    expect(dbl.foo).to eq(13)
  end
end
When
I run rspec spec/stub_spec.rb
Then
the examples should all pass
Stub multiple methods by passing a hash
Given
a file named "spec/stub_multiple_methods_spec.rb" with:
RSpec.describe "Stubbing multiple methods" do
  it "stubs each named method with the given return value" do
    dbl = double
    dbl.stub(:foo => 13, :bar => 10)
    expect(dbl.foo).to eq(13)
    expect(dbl.bar).to eq(10)
  end
end
When
I run rspec spec/stub_multiple_methods_spec.rb
Then
the examples should all pass

Last published about 3 years ago by myronmarston.