def and_raise(exception = RuntimeError, message = nil)
      if exception.respond_to?(:exception)
        exception = message ? exception.exception(message) : exception.exception
      end

      @plan = Proc.new { raise exception }
      self
    end
def and_raise(exception = RuntimeError, message = nil)
      if exception.respond_to?(:exception)
        exception = message ? exception.exception(message) : exception.exception
      end

      @plan = Proc.new { raise exception }
      self
    end
@overload and_raise
 @overload and_raise(ExceptionClass)
 @overload and_raise(ExceptionClass, message)
 @overload and_raise(exception_instance)

 Tells the object to raise an exception when the message is received.

 @note

   When you pass an exception class, the MessageExpectation will raise
   an instance of it, creating it with `exception` and passing `message`
   if specified.  If the exception class initializer requires more than
   one parameters, you must pass in an instance and not the class,
   otherwise this method will raise an ArgumentError exception.

 @return [self]