NAME
Assert::Refute::T::Errors - exception and warning check for Assert::Refute suite
SYNOPSIS
use Assert::Refute qw(:all);
use Assert::Refute::T::Errors;
my $c = contract {
my $foo = shift;
dies_like {
$foo->bar;
} "Bar requires an argument";
dies_like {
$foo->bar(1);
} '', "Bar works fine with 1";
};
$c->apply( $my_foo ); # check whether foo lives/dies as expected
Ditto with Test::More (although there are more fine-grained Test::Warn and Test::Exception):
use Test::More;
use Assert::Refute::T::Errors; # always *after* Test::More
use My::Module;
dies_like {
My::Module->foo;
} qw/foo requires/, "Epmty argument prohibited";
dies_like {
My::Module->bar;
} '', "Works without arguments";
EXPORTED FUNCTIONS
All functions below are exported by default.
dies_like
dies_like {
# shoddy code here
} 'pattern', 'explanation';
Check that supplied code throws the expected exception.
If pattern is empty, expect the code to live through.
Otherwise convert it to regular expression if needed and match $@
against it.
warns_like { ... }
warns_like {
warn "Foo";
warn "Bar";
} [qr/Foo/, "Bar"], "Human comment";
warns_like {
# Shoddy code here
} '', "No warnings";
Check that exactly the specified warnings were emitted by block. A single string or regex value is accepted and converted to 1-element array.
An empty array or a false value mean no warnings at all.
Note that this block does NOT catch exceptions. This MAY change in the future.
LICENSE AND COPYRIGHT
This module is part of Assert::Refute suite.
Copyright 2017-2018 Konstantin S. Uvarin. <khedin at cpan.org>
This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at: