Module: RSpec::Mocks::ExampleMethods

Includes:
ArgumentMatchers
Defined in:
lib/rspec/mocks/example_methods.rb

Defined Under Namespace

Modules: ExpectHost

Instance Method Summary (collapse)

Methods included from ArgumentMatchers

#any_args, #anything, #boolean, #duck_type, #hash_excluding, #hash_including, #instance_of, #kind_of, #no_args

Instance Method Details

- (Object) allow_message_expectations_on_nil

Disables warning messages about expectations being set on nil.

By default warning messages are issued when expectations are set on nil. This is to prevent false-positives and to catch potential bugs early on.

51
52
53
# File 'lib/rspec/mocks/example_methods.rb', line 51
def allow_message_expectations_on_nil
  RSpec::Mocks.space.proxy_for(nil).warn_about_expectations = false
end

- (Mock) double - (Mock) double(name) - (Mock) double(stubs) - (Mock) double(name, stubs)

Constructs an instance of RSpec::Mocks::Mock configured with an optional name, used for reporting in failure messages, and an optional hash of method/return-value pairs.

Examples:

book = double("book", :title => "The RSpec Book")
book.title #=> "The RSpec Book"

card = double("card", :suit => "Spades", :rank => "A")
card.suit  #=> "Spades"
card.rank  #=> "A"

Parameters:

  • name (String/Symbol)

    (optional) used in clarify intent

  • stubs (Hash)

    (optional) hash of method/return-value pairs

Returns:

  • (Mock)

See Also:

30
31
32
# File 'lib/rspec/mocks/example_methods.rb', line 30
def double(*args)
  declare_double('Double', *args)
end

- (Object) have_received(method_name)

Verifies that the given object received the expected message during the course of the test. The method must have previously been stubbed in order for messages to be verified.

Stubbing and verifying messages received in this way implements the Test Spy pattern.

Examples:

invitation = double('invitation', accept: true)
user.accept_invitation(invitation)
expect(invitation).to have_received(:accept)
# You can also use most message expectations:
expect(invitation).to have_received(:accept).with(mailer).once

Parameters:

  • method_name (Symbol)

    name of the method expected to have been called.

130
131
132
# File 'lib/rspec/mocks/example_methods.rb', line 130
def have_received(method_name)
  Matchers::HaveReceived.new(method_name)
end

- (Object) hide_const(constant_name)

Hides the named constant with the given value. The constant will be undefined for the duration of the test.

Like method stubs, the constant will be restored to its original value when the example completes.

Examples:

hide_const("MyClass") # => MyClass is now an undefined constant

Parameters:

  • constant_name (String)

    The fully qualified name of the constant. The current constant scoping at the point of call is not considered.

108
109
110
# File 'lib/rspec/mocks/example_methods.rb', line 108
def hide_const(constant_name)
  ConstantMutator.hide(constant_name)
end

- (Object) mock(*args)

Deprecated: Use double.

35
36
37
38
# File 'lib/rspec/mocks/example_methods.rb', line 35
def mock(*args)
  RSpec.deprecate "mock", :replacement => "double"
  declare_double('Mock', *args)
end

- (Object) stub(*args)

Deprecated: Use double.

41
42
43
44
# File 'lib/rspec/mocks/example_methods.rb', line 41
def stub(*args)
  RSpec.deprecate "stub", :replacement => "double"
  declare_double('Stub', *args)
end

- (Object) stub_const(constant_name, value, options = {})

Stubs the named constant with the given value. Like method stubs, the constant will be restored to its original value (or lack of one, if it was undefined) when the example completes.

Examples:

stub_const("MyClass", Class.new) # => Replaces (or defines) MyClass with a new class object.
stub_const("SomeModel::PER_PAGE", 5) # => Sets SomeModel::PER_PAGE to 5.

class CardDeck
  SUITS = [:Spades, :Diamonds, :Clubs, :Hearts]
  NUM_CARDS = 52
end
stub_const("CardDeck", Class.new)
CardDeck::SUITS # => uninitialized constant error
CardDeck::NUM_CARDS # => uninitialized constant error

stub_const("CardDeck", Class.new, :transfer_nested_constants => true)
CardDeck::SUITS # => our suits array
CardDeck::NUM_CARDS # => 52

stub_const("CardDeck", Class.new, :transfer_nested_constants => [:SUITS])
CardDeck::SUITS # => our suits array
CardDeck::NUM_CARDS # => uninitialized constant error

Parameters:

  • constant_name (String)

    The fully qualified name of the constant. The current constant scoping at the point of call is not considered.

  • value (Object)

    The value to make the constant refer to. When the example completes, the constant will be restored to its prior state.

  • options (Hash) (defaults to: {})

    Stubbing options.

Options Hash (options):

  • :transfer_nested_constants (Boolean, Array<Symbol>)

    Determines what nested constants, if any, will be transferred from the original value of the constant to the new value of the constant. This only works if both the original and new values are modules (or classes).

Returns:

  • (Object)

    the stubbed value of the constant

92
93
94
# File 'lib/rspec/mocks/example_methods.rb', line 92
def stub_const(constant_name, value, options = {})
  ConstantMutator.stub(constant_name, value, options)
end