Class: RSpec::Mocks::ArgumentListMatcher

### Home Classes Methods

### In Files

- lib/rspec/mocks/argument_list_matcher.rb

### Parent

Object

### Methods

- ::new
- #args_match?

### Class/Module Index

Quicksearch

- RSpec
- RSpec::Mocks
- RSpec::Mocks::AllowanceTarget
- RSpec::Mocks::AmbiguousReturnError
- RSpec::Mocks::AndCallOriginalImplementation
- RSpec::Mocks::AndReturnImplementation
- RSpec::Mocks::AndYieldImplementation
- RSpec::Mocks::AnyInstance
- RSpec::Mocks::AnyInstance::Chain
- RSpec::Mocks::AnyInstance::Chain::Customizations
- RSpec::Mocks::AnyInstance::ExpectationChain
- RSpec::Mocks::AnyInstance::MessageChains
- RSpec::Mocks::AnyInstance::PositiveExpectationChain
- RSpec::Mocks::AnyInstance::Recorder
- RSpec::Mocks::AnyInstance::StubChain
- RSpec::Mocks::AnyInstance::StubChainChain
- RSpec::Mocks::AnyInstanceAllowanceTarget
- RSpec::Mocks::AnyInstanceExpectationTarget
- RSpec::Mocks::ArgumentListMatcher
- RSpec::Mocks::ArgumentMatchers
- RSpec::Mocks::ArgumentMatchers::AnyArgMatcher
- RSpec::Mocks::ArgumentMatchers::AnyArgsMatcher
- RSpec::Mocks::ArgumentMatchers::BooleanMatcher
- RSpec::Mocks::ArgumentMatchers::DuckTypeMatcher
- RSpec::Mocks::ArgumentMatchers::EqualityProxy
- RSpec::Mocks::ArgumentMatchers::HashExcludingMatcher
- RSpec::Mocks::ArgumentMatchers::HashIncludingMatcher
- RSpec::Mocks::ArgumentMatchers::InstanceOf
- RSpec::Mocks::ArgumentMatchers::KindOf
- RSpec::Mocks::ArgumentMatchers::MatcherMatcher
- RSpec::Mocks::ArgumentMatchers::NoArgsMatcher
- RSpec::Mocks::ArgumentMatchers::RegexpMatcher
- RSpec::Mocks::Configuration
- RSpec::Mocks::Constant
- RSpec::Mocks::ConstantMutator
- RSpec::Mocks::ConstantMutator::BaseMutator
- RSpec::Mocks::ConstantMutator::ConstantHider
- RSpec::Mocks::ConstantMutator::DefinedConstantReplacer
- RSpec::Mocks::ConstantMutator::UndefinedConstantSetter
- RSpec::Mocks::ConstantStubber
- RSpec::Mocks::Deprecation
- RSpec::Mocks::ErrorGenerator
- RSpec::Mocks::ExampleMethods
- RSpec::Mocks::ExampleMethods::ExpectHost
- RSpec::Mocks::ExpectationTarget
- RSpec::Mocks::Implementation
- RSpec::Mocks::InstanceExec
- RSpec::Mocks::InstanceMethodStasher
- RSpec::Mocks::Matchers
- RSpec::Mocks::Matchers::HaveReceived
- RSpec::Mocks::Matchers::Receive
- RSpec::Mocks::Matchers::Receive::Customization
- RSpec::Mocks::MessageExpectation
- RSpec::Mocks::MethodDouble
- RSpec::Mocks::MethodDouble::ProcWithBlock
- RSpec::Mocks::Mock
- RSpec::Mocks::MockExpectationError
- RSpec::Mocks::OrderGroup
- RSpec::Mocks::Proxy
- RSpec::Mocks::ProxyForNil
- RSpec::Mocks::RecursiveConstMethods
- RSpec::Mocks::Space
- RSpec::Mocks::StubChain
- RSpec::Mocks::Syntax
- RSpec::Mocks::TargetBase
- RSpec::Mocks::TestDouble
- RSpec::Mocks::Version
- Marshal

No matching classes.

# RSpec::Mocks::ArgumentListMatcher

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.message(: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')

@see ArgumentMatchers

### Attributes

expected_args[R]

@private

### Public Class Methods

new(*expected_args, &block) click to toggle source

@api public @param [Array] *expected_args a list of expected literals and/or argument matchers @param [Block] block a block with arity matching the expected

Initializes an `ArgumentListMatcher` with a collection of literal values and/or argument matchers, or a block that handles the evaluation for you.

@see ArgumentMatchers @see args_match?

    # 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

### Public Instance Methods

args_match?(*args) click to toggle source

@api public @param [Array] *args

Matches each element in the `expected_args` against the element in the same position of the arguments passed to `new`.

@see initialize

    # File lib/rspec/mocks/argument_list_matcher.rb, line 64
    def args_match?(*args)
      match_any_args? || block_passes?(*args) || matchers_match?(*args)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.