Sha256: 71db1852bc12f9f9648d139e009346697bab5ce74faebe788421ff3bda2d9053

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

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}
    EOF
  end
end

require 'rspec/matchers'
RSpec::Matchers.module_eval do
  def have_received(sym, &block)
    RSpec::Matchers::Matcher.new :have_received, sym, @args, block do |sym, args, block|
      match do |actual|
        actual.received_message?(sym, *@args, &block)
      end


      failure_message_for_should do |actual|
        "expected #{actual.inspect} to have received #{sym.inspect} with #{@args.inspect}"
      end


      failure_message_for_should_not do |actual|
        "expected #{actual.inspect} to not have received #{sym.inspect} with #{@args.inspect}, but did"
      end


      description do
        "to have received #{sym.inspect} with #{args.inspect}"
      end


      def with(*args)
        @args = args
        self
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rspec-spies-2.0.0 lib/rspec-spies.rb