Object
Given a class `TheClass`, `TheClass.any_instance` returns a `Recorder`, which records stubs and message expectations for later playback on instances of `TheClass`.
Further constraints are stored in instances of [Chain](Chain).
@see AnyInstance @see Chain
# File lib/rspec/mocks/any_instance/recorder.rb, line 128 def already_observing?(method_name) @observed_methods.include?(method_name) end
# File lib/rspec/mocks/any_instance/recorder.rb, line 124 def build_alias_method_name(method_name) "__#{method_name}_without_any_instance__" end
@private
# File lib/rspec/mocks/any_instance/recorder.rb, line 120 def instance_that_received(method_name) @played_methods[method_name] end
@private
# File lib/rspec/mocks/any_instance/recorder.rb, line 112 def playback!(instance, method_name) RSpec::Mocks.space.ensure_registered(instance) message_chains.playback!(instance, method_name) @played_methods[method_name] = instance received_expected_message!(method_name) if message_chains.has_expectation?(method_name) end
# File lib/rspec/mocks/any_instance/recorder.rb, line 63 def should_not_receive(method_name, &block) should_receive(method_name, &block).never end
Initializes the recording a message expectation to be played back against any instance of this object that invokes the submitted method.
@see Methods#should_receive
# File lib/rspec/mocks/any_instance/recorder.rb, line 57 def should_receive(method_name, &block) @expectation_set = true observe!(method_name) message_chains.add(method_name, PositiveExpectationChain.new(self, method_name, &block)) end
@private
# File lib/rspec/mocks/any_instance/recorder.rb, line 107 def stop_all_observation! @observed_methods.each {|method_name| restore_method!(method_name)} end
Initializes the recording a stub to be played back against any instance of this object that invokes the submitted method.
@see Methods#stub
# File lib/rspec/mocks/any_instance/recorder.rb, line 29 def stub(method_name_or_method_map, &block) if method_name_or_method_map.is_a?(Hash) method_name_or_method_map.each do |method_name, return_value| stub(method_name).and_return(return_value) end else observe!(method_name_or_method_map) message_chains.add(method_name_or_method_map, StubChain.new(self, method_name_or_method_map, &block)) end end
@private
# File lib/rspec/mocks/any_instance/recorder.rb, line 97 def stub!(*) raise "stub! is not supported on any_instance. Use stub instead." end
Initializes the recording a stub chain to be played back against any instance of this object that invokes the method matching the first argument.
@see Methods#stub_chain
# File lib/rspec/mocks/any_instance/recorder.rb, line 45 def stub_chain(*method_names_and_optional_return_values, &block) normalize_chain(*method_names_and_optional_return_values) do |method_name, args| observe!(method_name) message_chains.add(method_name, StubChainChain.new(self, *args, &block)) end end
Removes any previously recorded stubs, stub_chains or message expectations that use `method_name`.
@see Methods#unstub
# File lib/rspec/mocks/any_instance/recorder.rb, line 71 def unstub(method_name) unless @observed_methods.include?(method_name.to_sym) raise RSpec::Mocks::MockExpectationError, "The method `#{method_name}` was not stubbed or was already unstubbed" end message_chains.remove_stub_chains_for!(method_name) ::RSpec::Mocks.proxies_of(@klass).each do |proxy| stubs[method_name].each { |stub| proxy.remove_single_stub(method_name, stub) } end stubs[method_name].clear stop_observing!(method_name) unless message_chains.has_expectation?(method_name) end
@private
# File lib/rspec/mocks/any_instance/recorder.rb, line 102 def unstub!(*) raise "unstub! is not supported on any_instance. Use unstub instead." end
@api private
Used internally to verify that message expectations have been fulfilled.
# File lib/rspec/mocks/any_instance/recorder.rb, line 87 def verify if @expectation_set && !message_chains.all_expectations_fulfilled? raise RSpec::Mocks::MockExpectationError, "Exactly one instance should have received the following message(s) but didn't: #{message_chains.unfulfilled_expectations.sort.join(', ')}" end ensure stop_all_observation! ::RSpec::Mocks.space.remove_any_instance_recorder_for(@klass) end
Generated with the Darkfish Rdoc Generator 2.