123456789_123456789_123456789_123456789_123456789_

Module: RSpec::Mocks::VerifyingDouble Private

Do not use. This module is for internal use only.
Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Defined in: rspec-mocks/lib/rspec/mocks/verifying_double.rb

Instance Method Summary

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(message, *args, &block)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/verifying_double.rb', line 20

def method_missing(message, *args, &block)
  # Null object conditional is an optimization. If not a null object,
  # validity of method expectations will have been checked at definition
  # time.
  if null_object?
    if @__sending_message == message
      __mock_proxy.ensure_implemented(message)
    else
      __mock_proxy.ensure_publicly_implemented(message, self)
    end

    __mock_proxy.validate_arguments!(message, args)
  end

  super
end

Instance Method Details

#__send__(name, *args, &block)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/verifying_double.rb', line 39

def __send__(name, *args, &block)
  @__sending_message = name
  super
ensure
  @__sending_message = nil
end

#initialize(doubled_module, *args)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/verifying_double.rb', line 53

def initialize(doubled_module, *args)
  @doubled_module = doubled_module

  possible_name = args.first
  name = if String === possible_name || Symbol === possible_name
           args.shift
         end

  super(name, *args)
  @__sending_message = nil
end

#respond_to?(message, include_private = false) ⇒ Boolean

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/verifying_double.rb', line 7

def respond_to?(message, include_private=false)
  return super unless null_object?

  method_ref = __mock_proxy.method_reference[message]

  case method_ref.visibility
  when :public    then true
  when :private   then include_private
  when :protected then include_private || RUBY_VERSION.to_f < 2.0
  else !method_ref.unimplemented?
  end
end

#send(name, *args, &block)

[ GitHub ]

  
# File 'rspec-mocks/lib/rspec/mocks/verifying_double.rb', line 48

def send(name, *args, &block)
  __send__(name, *args, &block)
end