lib/rspec/mocks/argument_expectation.rb in rspec-mocks-2.1.0 vs lib/rspec/mocks/argument_expectation.rb in rspec-mocks-2.2.0

- old
+ new

@@ -7,26 +7,31 @@ @args = args @matchers_block = args.empty? ? block : nil @match_any_args = false @matchers = nil - if ArgumentMatchers::AnyArgsMatcher === args.first + case args.first + when ArgumentMatchers::AnyArgsMatcher @match_any_args = true - elsif ArgumentMatchers::NoArgsMatcher === args.first + when ArgumentMatchers::NoArgsMatcher @matchers = [] else @matchers = args.collect {|arg| matcher_for(arg)} end end def matcher_for(arg) - return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg) - return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp) + return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg) + return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp) return ArgumentMatchers::EqualityProxy.new(arg) end def is_matcher?(obj) - return obj.respond_to?(:matches?) & obj.respond_to?(:description) + !is_stub_as_null_object?(obj) & obj.respond_to?(:matches?) & obj.respond_to?(:description) + end + + def is_stub_as_null_object?(obj) + obj.respond_to?(:__rspec_double_acting_as_null_object?) && obj.__rspec_double_acting_as_null_object? end def args_match?(*args) match_any_args? || matchers_block_matches?(*args) || matchers_match?(*args) end