lib/rspec/mocks/verifying_message_expecation.rb in rspec-mocks-3.0.4 vs lib/rspec/mocks/verifying_message_expecation.rb in rspec-mocks-3.1.0

- old
+ new

@@ -1,16 +1,14 @@ RSpec::Support.require_rspec_support 'method_signature_verifier' module RSpec module Mocks - # A message expectation that knows about the real implementation of the # message being expected, so that it can verify that any expectations # have the valid arguments. # @api private class VerifyingMessageExpectation < MessageExpectation - # A level of indirection is used here rather than just passing in the # method itself, since method look up is expensive and we only want to # do it if actually needed. # # Conceptually the method reference makes more sense as a constructor @@ -25,29 +23,33 @@ # @private def with(*args, &block) unless ArgumentMatchers::AnyArgsMatcher === args.first expected_args = if ArgumentMatchers::NoArgsMatcher === args.first - [] - elsif args.length > 0 - args - else - # No arguments given, this will raise. - super - end + [] + elsif args.length > 0 + args + else + # No arguments given, this will raise. + super + end - validate_arguments!(expected_args) + validate_expected_arguments!(expected_args) end super end private - def validate_arguments!(actual_args) + def validate_expected_arguments!(actual_args) return if method_reference.nil? method_reference.with_signature do |signature| - verifier = Support::MethodSignatureVerifier.new(signature, actual_args) + verifier = Support::LooseSignatureVerifier.new( + signature, + actual_args + ) + unless verifier.valid? # Fail fast is required, otherwise the message expecation will fail # as well ("expected method not called") and clobber this one. @failed_fast = true @error_generator.raise_invalid_arguments_error(verifier)