public
Rubygem
Description: One-liner for creating custom matchers in rspec
Homepage:
Clone URL: git://github.com/xdotcommer/rspec-custom-matchers.git
Greg Weber (author)
Thu Apr 16 08:15:22 -0700 2009
Michael Cowden (committer)
Thu Apr 16 13:03:56 -0700 2009

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.

Install

sudo gem install 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