Class: RSpec::Mocks::ArgumentListMatcher
- Inherits:
-
Object
- Object
- RSpec::Mocks::ArgumentListMatcher
- Defined in:
- lib/rspec/mocks/argument_list_matcher.rb
Overview
Wrapper for matching arguments against a list of expected values. Used by
the with method on a MessageExpectation:
object.should_receive(:message).with(:a, 'b', 3)
object.(:a, 'b', 3)
Values passed to with can be literal values or argument matchers that
match against the real objects .e.g.
object.should_receive(:message).with(hash_including(:a => 'b'))
Can also be used directly to match the contents of any Array. This
enables 3rd party mocking libs to take advantage of rspec's argument
matching without using the rest of rspec-mocks.
require 'rspec/mocks/argument_list_matcher'
include RSpec::Mocks::ArgumentMatchers
arg_list_matcher = RSpec::Mocks::ArgumentListMatcher.new(123, hash_including(:a => 'b'))
arg_list_matcher.args_match?(123, :a => 'b')
Instance Method Summary (collapse)
-
- (Boolean) args_match?(*args)
Matches each element in the
expected_argsagainst the element in the same position of the arguments passed tonew. -
- (ArgumentListMatcher) initialize(*expected_args)
constructor
Initializes an
ArgumentListMatcherwith a collection of literal values and/or argument matchers, or a block that handles the evaluation for you.
Constructor Details
- (ArgumentListMatcher) initialize(*expected_args)
Initializes an ArgumentListMatcher with a collection of literal
values and/or argument matchers, or a block that handles the evaluation
for you.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rspec/mocks/argument_list_matcher.rb', line 41 def initialize(*expected_args, &block) @expected_args = expected_args @block = expected_args.empty? ? block : nil @match_any_args = false @matchers = nil case expected_args.first when ArgumentMatchers::AnyArgsMatcher @match_any_args = true when ArgumentMatchers::NoArgsMatcher @matchers = [] else @matchers = expected_args.collect {|arg| matcher_for(arg)} end end |
Instance Method Details
- (Boolean) args_match?(*args)
Matches each element in the expected_args against the element in the same
position of the arguments passed to new.
64 65 66 |
# File 'lib/rspec/mocks/argument_list_matcher.rb', line 64 def args_match?(*args) match_any_args? || block_passes?(*args) || matchers_match?(*args) end |