module RSpec::Mocks

Constants

ConstantStubber

Provides a means to stub constants.

IGNORED_BACKTRACE_LINE

@private

KERNEL_METHOD_METHOD

@api private

NegationUnsupportedError
UnsupportedMatcherError

Attributes

space[RW]

Public Class Methods

allow_message(subject, message, opts={}, &block) click to toggle source

Adds an allowance (stub) on `subject`

@param subject the subject to which the message will be added @param message a symbol, representing the message that will be

added.

@param opts a hash of options, :expected_from is used to set the

original call site

@param block an optional implementation for the allowance

@example Defines the implementation of `foo` on `bar`, using the passed block

x = 0
RSpec::Mocks.allow_message(bar, :foo) { x += 1 }
# File lib/rspec/mocks.rb, line 49
def allow_message(subject, message, opts={}, &block)
  orig_caller = opts.fetch(:expected_from) { caller(1)[0] }
  ::RSpec::Mocks.proxy_for(subject).
    add_stub(orig_caller, message.to_sym, opts, &block)
end
any_instance_recorder_for(klass) click to toggle source
# File lib/rspec/mocks.rb, line 33
def any_instance_recorder_for(klass)
  space.any_instance_recorder_for(klass)
end
configuration() click to toggle source
# File lib/rspec/mocks/configuration.rb, line 48
def self.configuration
  @configuration ||= Configuration.new
end
expect_message(subject, message, opts={}, &block) click to toggle source

Sets a message expectation on `subject`. @param subject the subject on which the message will be expected @param message a symbol, representing the message that will be

expected.

@param opts a hash of options, :expected_from is used to set the

original call site

@param block an optional implementation for the expectation

@example Expect the message `foo` to receive `bar`, then call it

RSpec::Mocks.expect_message(bar, :foo)
bar.foo
# File lib/rspec/mocks.rb, line 66
def expect_message(subject, message, opts={}, &block)
  orig_caller = opts.fetch(:expected_from) { caller(1)[0] }
  ::RSpec::Mocks.proxy_for(subject).
    add_message_expectation(orig_caller, message.to_sym, opts, &block)
end
method_handle_for(object, method_name) click to toggle source

@api private Used internally to get a method handle for a particular object and method name.

Includes handling for a few special cases:

- Objects that redefine #method (e.g. an HTTPRequest struct)
- BasicObject subclasses that mixin a Kernel dup (e.g. SimpleDelegator)
# File lib/rspec/mocks.rb, line 83
def method_handle_for(object, method_name)
  if ::Kernel === object
    KERNEL_METHOD_METHOD.bind(object).call(method_name)
  else
    object.method(method_name)
  end
end
proxies_of(klass) click to toggle source
# File lib/rspec/mocks.rb, line 29
def proxies_of(klass)
  space.proxies_of(klass)
end
proxy_for(object) click to toggle source
# File lib/rspec/mocks.rb, line 25
def proxy_for(object)
  space.proxy_for(object)
end
setup(host) click to toggle source
# File lib/rspec/mocks.rb, line 10
def setup(host)
  (class << host; self; end).class_eval do
    include RSpec::Mocks::ExampleMethods
  end
  self.space ||= RSpec::Mocks::Space.new
end
teardown() click to toggle source
# File lib/rspec/mocks.rb, line 21
def teardown
  space.reset_all
end
verify() click to toggle source
# File lib/rspec/mocks.rb, line 17
def verify
  space.verify_all
end