class RSpec::Mocks::Space

@api private

Attributes

any_instance_recorders[R]
proxies[R]

Public Class Methods

new() click to toggle source
# File lib/rspec/mocks/space.rb, line 7
def initialize
  @proxies                 = {}
  @any_instance_recorders  = {}
end

Public Instance Methods

any_instance_recorder_for(klass) click to toggle source
# File lib/rspec/mocks/space.rb, line 43
def any_instance_recorder_for(klass)
  id = klass.__id__
  any_instance_recorders.fetch(id) do
    any_instance_recorders[id] = AnyInstance::Recorder.new(klass)
  end
end
ensure_registered(object)
Alias for: proxy_for
expectation_ordering() click to toggle source
# File lib/rspec/mocks/space.rb, line 39
def expectation_ordering
  @expectation_ordering ||= OrderGroup.new
end
id_for(object) click to toggle source
# File lib/rspec/mocks/space.rb, line 75
def id_for(object)
  id = object.__id__

  return id if object.equal?(::ObjectSpace._id2ref(id))
  # this suggests that object.__id__ is proxying through to some wrapped object

  object.instance_eval do
    @__id_for_rspec_mocks_space ||= ::SecureRandom.uuid
  end
end
proxies_of(klass) click to toggle source
# File lib/rspec/mocks/space.rb, line 50
def proxies_of(klass)
  proxies.values.select { |proxy| klass === proxy.object }
end
proxy_for(object) click to toggle source
# File lib/rspec/mocks/space.rb, line 54
def proxy_for(object)
  id = id_for(object)
  proxies.fetch(id) do
    proxies[id] = case object
                  when NilClass   then ProxyForNil.new
                  when TestDouble then object.__build_mock_proxy
                  else
                    Proxy.new(object)
                  end
  end
end
Also aliased as: ensure_registered
registered?(object) click to toggle source
# File lib/rspec/mocks/space.rb, line 68
def registered?(object)
  proxies.has_key?(id_for object)
end
reset_all() click to toggle source
# File lib/rspec/mocks/space.rb, line 22
def reset_all
  ConstantMutator.reset_all

  proxies.each_value do |object|
    object.reset
  end

  proxies.clear

  any_instance_recorders.each_value do |recorder|
    recorder.stop_all_observation!
  end

  any_instance_recorders.clear
  expectation_ordering.clear
end
verify_all() click to toggle source
# File lib/rspec/mocks/space.rb, line 12
def verify_all
  proxies.each_value do |object|
    object.verify
  end

  any_instance_recorders.each_value do |recorder|
    recorder.verify
  end
end