[rspec-users] slightly confusing error message

David Chelimsky dchelimsky at gmail.com
Fri Aug 26 09:09:20 EDT 2011


On Aug 24, 2011, at 11:48 AM, Rob Biedenharn wrote:

> 
> On Aug 23, 2011, at 5:18 PM, David Chelimsky wrote:
> 
>> 
>> On Aug 23, 2011, at 3:26 PM, Rob Biedenharn wrote:
>> 
>>> On Aug 23, 2011, at 3:16 PM, David Chelimsky wrote:
>>> 
>>>> On Aug 23, 2011, at 1:00 PM, Roger Pack wrote:
>>>> 
>>>>> This error message:
>>>>> 
>>>>> 
>>>>> it 'should' do
>>>>>  proc { eval("a=")}.should raise_exception(/SyntaxError/)
>>>>> end
>>> 
>>> shouldn't that be
>>> 	raise_exception(SyntaxError)
>>> that is, the exception class, not a Regexp literal to match its name.
>> 
>> It supports any of:
>> 
>> raise_error(ErrorClass)
>> raise_error(ErrorClass, string)
>> raise_error(ErrorClass, /regex/)
>> raise_error(string)
>> raise_error(/regex/)
>> 
>> (or raise_exception with the same set of alternatives)
>> 
>> Cheers,
>> David
> 
> RSpec 1.3 (from apidock)
> 
> raise_exception(exception=Exception, message=nil, &block) public
> With no args, matches if any exception is raised. With a named exception, matches only if that specific exception is raised. With a named exception and messsage specified as a String, matches only if bothmatch. With a named exception and messsage specified as a Regexp, matches only if both match. Passan optional block to perform extra verifications on the exception matched
> 
> 
> Rspec 2 (from http://relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/raise-error-matcher)
> 
> only shows forms with either nothing specified, or the first argument is always the Exception class.
> 
> If you use one of:
> 	raise_error(string)
> 	raise_error(/regex/)
> against what is the string or /regex/ matched?  The message associated to the Exception or the NAME of the exception.
> 
>>>>>   expected Exception with message matching /SyntaxError/, got
>>>>> #<SyntaxError: (eval):1: syntax error, unexpected end-of-file>
>>>>> 
>>>>> Is a bit confusing, since it appears from the error output that it
>>>>> *does* match /SyntaxError/
> 
> The MESSAGE does not match /SyntaxError/ but it would have matched /syntax error/.
> 
> I think that's where the OP is confused.
> 
> -Rob

I beefed up the doc: https://github.com/rspec/rspec-expectations/blob/a541a7523ef282b9bf96141f5b8a0920dda55281/features/built_in_matchers/expect_error.feature#L18-23. Relish requires pushing all the docs at once and I have no way of knowing what the last commit was that I pushed (so I can't really push the current docs or roll back to the last release and patch them). So this won't make it to the relish site today, but will as soon as I can get a release out.

Cheers,
David

>>>>> Might be able to word it better or along those lines.
>>>>> Thanks!
>>>>> -roger-
>>>> 
>>>> Please report this to http://github.com/rspec/rspec-expectations/issues.
>>>> 
>>>> Cheers,
>>>> David



More information about the rspec-users mailing list