Chapter 7. Testing
7.2. Warnings and exceptions
Testing for unintentional warnings
Ideally your code doesn't generate warnings. Test2::Plugin::NoWarnings will cause your test to fail if any warnings are generated. Here is how to use it:
use Test2::V0;
use Test2::Plugin::NoWarnings;
By default this module suppresses any warnings. If you want to see the warnings in your test output:
use Test2::V0;
use Test2::Plugin::NoWarnings echo => 1;
Testing for intentional warnings
use Test2::V0;
ok warns { warn 'a' }, "the code warns";
ok !warns { 1 }, "The code does not warn";
is warns { warn 'a'; warn 'b' }, 2, "got 2 warnings";
ok no_warnings { ... }, "code did not warn";
like
warning { warn 'xxx' },
qr/xxx/,
"Got expected warning"
;
is
warnings { warn "a\n"; warn "b\n" },
[ "a\n", "b\n", ],
"Got 2 warnings"
;
For more details see Test2::Tools::Warnings.
Testing for exceptions
use Test2::V0;
like(
dies { die 'xxx' },
qr/xxx/,
"Got exception"
);
ok(lives { ... }, "did not die") or note($@);
For more details see Test2::Tools::Exceptions.