class RSpec::Mocks::TargetBase
@private
Public Class Methods
delegate_not_to(matcher_method, options={})
click to toggle source
# File lib/rspec/mocks/targets.rb, line 18 def self.delegate_not_to(matcher_method, options={}) method_name = options.fetch(:from) define_method(method_name) do |matcher, &block| case matcher when Matchers::Receive, Matchers::HaveReceived define_matcher(matcher, matcher_method, &block) when Matchers::ReceiveMessages, Matchers::ReceiveMessageChain raise_negation_unsupported(method_name, matcher) else raise_unsupported_matcher(method_name, matcher) end end end
delegate_to(matcher_method)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 9 def self.delegate_to(matcher_method) define_method(:to) do |matcher, &block| unless matcher_allowed?(matcher) raise_unsupported_matcher(:to, matcher) end define_matcher(matcher, matcher_method, &block) end end
disallow_negation(method_name)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 32 def self.disallow_negation(method_name) define_method(method_name) do |matcher, *_args| raise_negation_unsupported(method_name, matcher) end end
new(target)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 5 def initialize(target) @target = target end
Private Instance Methods
define_matcher(matcher, name, &block)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 44 def define_matcher(matcher, name, &block) matcher.__send__(name, @target, &block) end
expression()
click to toggle source
# File lib/rspec/mocks/targets.rb, line 60 def expression self.class::EXPRESSION end
matcher_allowed?(matcher)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 40 def matcher_allowed?(matcher) matcher.class.name.start_with?("RSpec::Mocks::Matchers".freeze) end
raise_negation_unsupported(method_name, matcher)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 54 def raise_negation_unsupported(method_name, matcher) raise NegationUnsupportedError, "`#{expression}(...).#{method_name} #{matcher.name}` is not supported since it " "doesn't really make sense. What would it even mean?" end
raise_unsupported_matcher(method_name, matcher)
click to toggle source
# File lib/rspec/mocks/targets.rb, line 48 def raise_unsupported_matcher(method_name, matcher) raise UnsupportedMatcherError, "only the `receive`, `have_received` and `receive_messages` matchers are supported " "with `#{expression}(...).#{method_name}`, but you have provided: #{matcher}" end