class RSpec::Mocks::TargetBase
def self.delegate_to(matcher_method, options = {})
def self.delegate_to(matcher_method, options = {}) method_name = options.fetch(:from) { :to } class_eval(<<-RUBY) def #{method_name}(matcher, &block) unless Matchers::Receive === matcher raise UnsupportedMatcherError, "only the `receive` matcher is supported " + "with `\#{expression}(...).\#{#{method_name.inspect}}`, but you have provided: \#{matcher}" end matcher.__send__(#{matcher_method.inspect}, @target, &block) end RUBY end
def self.disallow_negation(method)
def self.disallow_negation(method) define_method method do |*args| raise NegationUnsupportedError, "`#{expression}(...).#{method} receive` is not supported since it " + "doesn't really make sense. What would it even mean?" end end
def expression
def expression self.class::EXPRESSION end
def initialize(target)
def initialize(target) @target = target end