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