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_args
against the element in the same position of the arguments passed tonew
. -
- (ArgumentListMatcher) initialize(*expected_args)
constructor
Initializes an
ArgumentListMatcher
with 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 |