class RaiseExceptionMatcher

Public Class Methods

new(exception, message, &block) click to toggle source
# File lib/mspec/matchers/raise_exception.rb, line 2
def initialize(exception, message, &block)
  @exception = exception
  @message = message
  @block = block
end

Public Instance Methods

failure_message() click to toggle source
# File lib/mspec/matchers/raise_exception.rb, line 27
def failure_message
  message = ["Expected #{@exception}#{%[ (#{@message})] if @message}"]

  if @actual then
    message << "but got #{@actual.class}#{%[ (#{@actual.message})] if @actual.message}"
  else
    message << "but no exception was raised (#@result was returned)"
  end

  message
end
matches?(proc) click to toggle source
# File lib/mspec/matchers/raise_exception.rb, line 8
def matches?(proc)
  @result = proc.call
  return false
rescue Object => @actual
  return false unless @actual.instance_of? @exception
  if @message then
    case @message
    when String then
      return false if @message != @actual.message
    when Regexp then
      return false if @message !~ @actual.message
    end
  end

  @block[@actual] if @block

  return true
end
negative_failure_message() click to toggle source
# File lib/mspec/matchers/raise_exception.rb, line 39
def negative_failure_message
  message = ["Expected to not get #{@exception}#{%[ (#{@message})] if @message}", ""]
  message[1] = "but got #{@actual.class}#{%[ (#{@actual.message})] if @actual.message}" unless @actual.class == @exception
  message
end