[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[Test::Unit] Asserting exception messages?

Daniel Schierbeck

2/16/2007 7:37:00 PM

I've been looking around, but I haven't found a simple way of asserting
that a raised exception has a specific message. RSpec can do this quite
easily:

lambda{ @fixture.foo }.should_raise(FooError,
'out of foo, try our delicious bar instead!')

I know I can do this:

def test_raises_foo_with_correct_message
@fixture.foo
rescue FooError => e
unless e.message == 'out of foo, try our delicious bar instead!'
flunk 'raised with wrong message'
end
else
flunk 'did not raise exception'
end

But that's rather inelegant. This is what I'd like to have:

assert_raise FooException, BarException,
'out of foo and bar. try baz!' do
@fixture.foo
end

So what's your thoughts?


Cheers,
Daniel Schierbeck


2 Answers

Eric Hodel

2/16/2007 9:18:00 PM

0

On Feb 16, 2007, at 11:36, Daniel Schierbeck wrote:

> I've been looking around, but I haven't found a simple way of
> asserting
> that a raised exception has a specific message. RSpec can do this
> quite
> easily:
>
> lambda{ @fixture.foo }.should_raise(FooError,
> 'out of foo, try our delicious bar instead!')

So does Test::Unit.

e = assert_raise BlahError do ... end
assert_equal 'something', e.message

Daniel Schierbeck

2/17/2007 2:21:00 PM

0

On Sat, 2007-02-17 at 06:17 +0900, Eric Hodel wrote:
> On Feb 16, 2007, at 11:36, Daniel Schierbeck wrote:
>
> > I've been looking around, but I haven't found a simple way of
> > asserting
> > that a raised exception has a specific message. RSpec can do this
> > quite
> > easily:
> >
> > lambda{ @fixture.foo }.should_raise(FooError,
> > 'out of foo, try our delicious bar instead!')
>
> So does Test::Unit.
>
> e = assert_raise BlahError do ... end
> assert_equal 'something', e.message

Very nice, didn't think about checking the return value!

Thanks!