define_matcher_outside_rspec.feature

features/matchers/define_matcher_outside_rspec.feature
Last Update: Thu Apr 30 18:23:48 -0500 2009

Feature: define matcher outside rspec

In order to express my domain clearly in my code examples
As a non-rspec user
I want a shortcut to define custom matchers

Scenario: define a matcher with default messages
  Given a file named "test_multiples.rb" with:
    """
    $:.unshift File.join(File.dirname(__FILE__), "/../../lib")
    require 'test/unit'
    require 'spec/expectations'

    Spec::Matchers.define :be_a_multiple_of do |expected|
      match do |actual|
        actual % expected == 0
      end
    end

    class Test::Unit::TestCase
      include Spec::Matchers
    end

    class TestMultiples < Test::Unit::TestCase

      def test_9_should_be_a_multiple_of_3
        9.should be_a_multiple_of(3)
      end

      def test_9_should_be_a_multiple_of_4
        9.should be_a_multiple_of(4)
      end

    end
    """
  When I run "ruby test_multiples.rb"
  Then the exit code should be 256
  And the stdout should match "expected 9 to be a multiple of 4"
  And the stdout should match "2 tests, 0 assertions, 1 failures, 0 errors"