Perl Carp: признаться в юнит-тесте
Я пытаюсь написать Perl модульный тест. Я могу протестировать счастливый сценарий для этого. Однако, если в методе возникла ошибка, она печатает ошибку, используя Carp:confess "<message>"
, Я не могу поймать этот случай в моем тесте. Я пытался с помощью
dies_ok( <method call>, 'Expected Error' );
Однако контрольный пример все еще не проходит. Он печатает сообщение, переданное Carp::confess, а затем печатает
Looks like your test exited with 111 before it could output anything. Dubious, test returned 111 (wstat 28416, 0x6f00)
Есть ли способ, которым я могу поймать это? Я даже пытался throws_ok
но не работает.
Пожалуйста, помогите, руководствуясь, как я должен поймать эти ошибки. Я использую это dies_ok
а также throws_ok
неправильно?
1 ответ
Вы можете просто проверить $@ после выражения eval.
use strict;
use warnings;
use Test::More;
use Carp qw(confess);
sub err { confess('Bad thing'); }
eval { err };
like($@, qr/^Bad thing/, "confess('Bad thing')");
done_testing();