5

死ぬと予想されるPerl呼び出しのテストを書く方法はありますか?特定の呼び出しが不適切な形式の入力で終了することを確認したいと思います。

sub routine_a {
   my $arg = shift;
   die if $arg eq 'FOO';
   print "routine_a: $arg\n";
}
sub routine_b {
   my $arg = shift;
   die if $arg eq 'BAR';
   print "routine_b: $arg\n";
}

sub test_all {
   assert( routine_a("blah") );
   assert( routine_b("blab") );
   assert_death( routine_a("FOO") );
   assert_death( routine_b("BAR") );
}
4

2 に答える 2

6

Test::Exceptionを参照してください:

use Test::Exception;
dies_ok { $foo->method } 'expecting to die';
于 2012-06-04T16:12:24.747 に答える
5

eval { ... }テストをブロックでラップし、$@設定されているかどうかを確認します。

eval { test_thats_supposed_to_fail() };
ok( $@ , "test failed like it was supposed to" );
于 2012-06-04T16:13:09.337 に答える