Created: 2008-12-31 05:12
Updated: 2016-10-19 03:29


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 and updated by remi to make it an easy-to-install RubyGem.


sudo gem install rspec-custom-matchers -s


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  }

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

That's how I do it!


  • 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
Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more