# Class: Mocha::ParameterMatchers::Base Abstract

Inherits:
  Object
  - Object
  - Mocha::ParameterMatchers::Base
  show all

Defined in:
  lib/mocha/parameter_matchers/base.rb

## Overview

This class is abstract.

Subclass and implement `#matches?` and `#mocha_inspect` to define a custom matcher. Also add a suitably named instance method to Mocha::ParameterMatchers to build an instance of the new matcher c.f. #equals.

## Direct Known Subclasses

AllOf, AnyOf, AnyParameters, Anything, Equals, EquivalentUri, HasEntries, HasEntry, HasKey, HasKeys, HasValue, Includes, InstanceOf, IsA, KindOf, Not, Optionally, RegexpMatches, RespondsWith, YamlEquivalent

## Instance Method Summary collapse

- #&(other) ⇒ AllOf

  A shorthand way of combining two matchers when both must match.

- #|(other) ⇒ AnyOf

  A shorthand way of combining two matchers when at least one must match.

## Instance Method Details

### #&(other) ⇒ `AllOf`

A shorthand way of combining two matchers when both must match.

Returns a new AllOf parameter matcher combining two matchers using a logical AND.

This shorthand will not work with an implicit equals match. Instead, an explicit Equals matcher should be used.

Examples:

Alternative ways to combine matchers with a logical AND.

    object = mock()
    object.expects(:run).with(all_of(has_key(:foo), has_key(:bar)))
    object.run(foo: 'foovalue', bar: 'barvalue')

    # is exactly equivalent to

    object.expects(:run).with(has_key(:foo) & has_key(:bar))
    object.run(foo: 'foovalue', bar: 'barvalue)

Parameters:

- other (`Base`) —

  parameter matcher.

Returns:

- (`AllOf`) —

  parameter matcher.

See Also:

- Expectation#with

    30
    31
    32
    # File 'lib/mocha/parameter_matchers/base.rb', line 30

    def &(other)
      AllOf.new(self, other)
    end

### #|(other) ⇒ `AnyOf`

A shorthand way of combining two matchers when at least one must match.

Returns a new `AnyOf` parameter matcher combining two matchers using a logical OR.

This shorthand will not work with an implicit equals match. Instead, an explicit Equals matcher should be used.

Examples:

Alternative ways to combine matchers with a logical OR.

    object = mock()
    object.expects(:run).with(any_of(has_key(:foo), has_key(:bar)))
    object.run(foo: 'foovalue')

    # is exactly equivalent to

    object.expects(:run).with(has_key(:foo) | has_key(:bar))
    object.run(foo: 'foovalue')

Using an explicit Equals matcher in combination with #|.

    object.expects(:run).with(equals(1) | equals(2))
    object.run(1) # passes
    object.run(2) # passes
    object.run(3) # fails

Parameters:

- other (`Base`) —

  parameter matcher.

Returns:

- (`AnyOf`) —

  parameter matcher.

See Also:

- Expectation#with

    60
    61
    62
    # File 'lib/mocha/parameter_matchers/base.rb', line 60

    def |(other)
      AnyOf.new(self, other)
    end