2

我正在尝试编写 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不正确吗?

4

1 回答 1

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();
于 2015-11-19T16:13:49.937 回答