Hi all,
I've been refactoring a bunch of old tests with Test::More and some
convenience routines for testing exceptions dropped out (along with some
class base testing and mock object modules which still need cleaning up into
something sane.)
dies_ok BLOCK TEST_NAME
Tests to see that BLOCK exits by dying, rather than by exiting
normally. For example:
dies_ok { div(1, 0) } 'divide by zero detected';
lives_ok BLOCK TEST_NAME
Tests to see that BLOCK exits normally, and doesn't die. For
example:
lives_ok { $file = read_file('test.txt') } 'file read';
throws_ok BLOCK REGEX, TEST_NAME
throws_ok BLOCK CLASS, TEST_NAME
Tests to see that BLOCK throws a specific exception.
In the first form the test passes if the stringified exception
matches the give regular expression. For example:
throws_ok {
read_file('test.txt')
} qr/No such file/, 'no file';
In the second form the test passes if the exception is of the same
class as the one supplied, or a subclass of that class. For example:
throws_ok {$foo->bar} "Error::Simple", 'simple error';
(you can find the code at
<http://www.quietstars.com/perl/Test-Exception-0.02.tar.gz> if you want to
play)
Any comments before I throw it at CPAN? Sound vaguely sane?
Cheers,
Adrian