Sha256: 6b14f833056dece0432137a0be3022ca7db3a249f557e7c3cd6beb347b4cf696

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

module Riot
  # Asserts that the test raises the expected Exception
  #   asserts("test") { raise My::Exception }.raises(My::Exception)
  #   should("test") { raise My::Exception }.raises(My::Exception)
  #
  # You can also check to see if the provided message equals or matches your expectations. The message
  # from the actual raised exception will be converted to a string before any comparison is executed.
  #   asserts("test") { raise My::Exception, "Foo" }.raises(My::Exception, "Foo")
  #   asserts("test") { raise My::Exception, "Foo Bar" }.raises(My::Exception, /Bar/)
  class RaisesMacro < AssertionMacro
    register :raises
    expects_exception!

    def evaluate(actual_exception, expected_class, expected_message=nil)
      actual_message = actual_exception && actual_exception.message
      if actual_exception.nil?
        fail("should have raised #{expected_class}, but raised nothing")
      elsif expected_class != actual_exception.class
        fail("should have raised #{expected_class}, not #{actual_exception.class}")
      elsif expected_message && !(actual_message.to_s =~ %r[#{expected_message}])
        fail("expected #{expected_message.inspect} for message, not #{actual_message.inspect}")
      else
        if expected_message
          pass("raises #{expected_class.inspect} with message #{expected_message.inspect}")
        else
          pass("raises #{expected_class.inspect}")
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
riot-0.10.11 lib/riot/assertion_macros/raises.rb
riot-0.10.10 lib/riot/assertion_macros/raises.rb