lib/rspec-spies.rb in rspec-spies-2.1.2 vs lib/rspec-spies.rb in rspec-spies-2.1.3

- old
+ new

@@ -1,26 +1,36 @@ require 'rspec/mocks/method_double' RSpec::Mocks::MethodDouble.class_eval do # override defining stubs to record the message was called. # there's only one line difference from upstream rspec, but can't change it without fully overriding def define_proxy_method - method_name = @method_name - visibility_for_method = "#{visibility} :#{method_name}" - object_singleton_class.class_eval(<<-EOF, __FILE__, __LINE__) - def #{method_name}(*args, &block) - __mock_proxy.record_message_received :#{method_name}, *args, &block - __mock_proxy.message_received :#{method_name}, *args, &block - end - #{visibility_for_method} + return if @method_is_proxied + + object_singleton_class.class_eval <<-EOF, __FILE__, __LINE__ + 1 + def #{@method_name}(*args, &block) + __mock_proxy.record_message_received :#{@method_name}, *args, &block + __mock_proxy.message_received :#{@method_name}, *args, &block + end + #{visibility_for_method} EOF + @method_is_proxied = true end + + def visibility_for_method + "#{visibility} :#{method_name}" + end end require 'rspec/expectations' require 'rspec/matchers' -argument_expectation_class = RSpec::Mocks.const_defined?(:ArgumentExpectation) ? - RSpec::Mocks::ArgumentExpectation : - RSpec::Mocks::ArgumentListMatcher + +argument_expectation_class = begin + require 'rspec/mocks/argument_list_matcher' + RSpec::Mocks::ArgumentListMatcher +rescue LoadError + require 'rspec/mocks/argument_expectation' + RSpec::Mocks::ArgumentExpectation +end RSpec::Matchers.define :have_received do |method_name, args, block| match do |actual| messages_received = actual.send(:__mock_proxy).instance_variable_get("@messages_received") messages_received.any? do |message|