Class: RSpec::Matchers::MatcherProtocol
- Inherits:
- 
      Object
        - Object
- RSpec::Matchers::MatcherProtocol
 
- Defined in:
- lib/rspec/matchers/matcher_protocol.rb
Overview
This class is not loaded at runtime by rspec-expectations. It exists purely to provide documentation for the matcher protocol.
rspec-expectations can work with any matcher object that implements this protocol.
Required Methods (collapse)
- 
  
      - (String) failure_message 
  
    This will only be called if #matches? returns false. 
- 
  
      - (Boolean) matches?(actual) { ... }
  
    True if this matcher matches the provided object. 
Optional Methods (collapse)
- 
  
      - (String, Object) actual 
  
    The actual value for the purposes of a diff. 
- 
  
      - (String) description 
  
    The description is used for two things:. 
- 
  
      - (Boolean) diffable? 
  
    Indicates that this matcher provides actualandexpectedattributes, and that the values returned by these can be usefully diffed, which can be included in the output.
- 
  
      - (Boolean) does_not_match?(actual) { ... }
  
    In a negative expectation such as expect(x).not_to foo, RSpec will callfoo.does_not_match?(x)if this method is defined.
- 
  
      - (String, Object) expected 
  
    The expected value for the purposes of a diff. 
- 
  
      - (Boolean) expects_call_stack_jump? 
  
    Indicates that when this matcher is used in a block expectation expression, it expects the block to use a ruby construct that causes a call stack jump (such as raising an error or throwing a symbol). 
- 
  
      - (String) failure_message_when_negated 
  
    This will only be called when a negative match fails. 
- 
  
      - (Boolean) supports_block_expectations? 
  
    Indicates that this matcher can be used in a block expectation expression, such as expect { foo }.to raise_error.
Instance Method Details
- (String, Object) actual
This method is required if diffable? returns true.
The actual value for the purposes of a diff.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 82
 | 
- (String) description
The description is used for two things:
- When using RSpec's one-liner syntax
(e.g. it { is_expected.to matcher }), the description is used to generate the example's doc string since you have not provided one.
- In a composed matcher expression, the description is used as part of the failure message (and description) of the outer matcher.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 42
 | 
- (Boolean) diffable?
Indicates that this matcher provides actual and expected attributes,
and that the values returned by these can be usefully diffed, which can
be included in the output.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 76
 | 
- (Boolean) does_not_match?(actual) { ... }
In a negative expectation such as expect(x).not_to foo, RSpec will
call foo.does_not_match?(x) if this method is defined. If it's not
defined it will fall back to using !foo.matches?(x). This allows you
to provide custom logic for the negative case.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 24
 | 
- (String, Object) expected
This method is required if diffable? returns true.
The expected value for the purposes of a diff.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 89
 | 
- (Boolean) expects_call_stack_jump?
This method is very rarely used or needed.
If not defined, RSpec assumes a value of false for this method.
Indicates that when this matcher is used in a block expectation expression, it expects the block to use a ruby construct that causes a call stack jump (such as raising an error or throwing a symbol).
This is used internally for compound block expressions, as matchers which expect call stack jumps must be treated with care to work properly.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 63
 | 
- (String) failure_message
This will only be called if #matches? returns false.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 16
 | 
- (String) failure_message_when_negated
This method is listed as optional because matchers do not have to
support negation. But if your matcher does support negation, this is a
required method -- otherwise, you'll get a NoMethodError.
This will only be called when a negative match fails.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 35
 | 
- (Boolean) matches?(actual) { ... }
Returns true if this matcher matches the provided object.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 10
 | 
- (Boolean) supports_block_expectations?
If not defined, RSpec assumes a value of false for this method.
Indicates that this matcher can be used in a block expectation expression,
such as expect { foo }.to raise_error. Generally speaking, this is
only needed for matchers which operate on a side effect of a block, rather
than on a particular object.
|  | # File 'lib/rspec/matchers/matcher_protocol.rb', line 55
 |