In my specs for matchers, I prefer to use the matcher as a user would (e.g. in an `expect( ).to` expression) rather than calling `matches?` directly.  This helps show how the matcher will actually be used, and surfaces what the failure message will be (which is really important).  With this approach there are at least 4 cases that need to be spec'd:

* Using `expect( ).to matcher` where it passes.
* Using `expect( ).to matcher` where it fails.
* Using `expect( ).not_to matcher` where it passes.
* Using `expect( ).not_to matcher` where it fails.

For an example of this, see the [yield_spec](https://github.com/rspec/rspec-expectations/blob/master/spec/rspec/matchers/yield_spec.rb).