RSpec Custom Matchers

This gem makes it really easy to define your own RSpec custom matchers in 1 line of code.

This class / project is created by xdotcommer.
I forked it to make it an easy-to-install RubyGem

Install

sudo gem install remi-rspec-custom-matchers -s http://gems.github.com

Usage

Wherever you want to include the matcher method, include CustomMatcher::Helper

Remember, if you want to be able to call matcher(:foo) in the body of a class, you might want to extend CustomMatcher::Helper instead of including it.

Personally, I like to keep all of my own custom matchers for a project in a module, so I do ...

require 'rspec-custom-matchers'

module MyMatchers
  extend CustomMatcher::Helper

  matcher(:be_divisible_by) { |number, divisor| number % divisor == 0 }
  matcher(:be_even)         { |even| even % 2 == 0 }
  matcher(:be_odd)          { |odd|  odd % 2 != 0  }
  matcher(:be_equal_to)
end

and then, in my spec_helper.rb

require 'my_matchers'

Spec::Runner.configure do |config|
  config.include MyMatchers # this will make the matchers available to your specs
end

That's how I do it!

TODO

  • should support matcher(:x){} as well as merb's Spec::Matcher.create, which has more features and can be found at merb-core/lib/merb-core/test/test_ext/rspec.rb