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)