我目前正在學習單元測試。爲此,我正在寫一個腳本,併爲整個腳本創建單元測試。到目前爲止事情進展順利,但我試圖測試從命令行輸入腳本的不正確數據觸發幫助信息。如何用Try :: Tiny「捕捉」Perl腳本中的pod2usage出口?
我的代碼看起來是這樣的:
sub getContext{
my ($help) = @_;
GetOptions(
help|h => \$help,
...
pod2usage if $help;
...
}
我的測試看起來像:
my $help_exception = 0;
try{
getContext({help => 0});
}catch{
$help_exception = 1;
}
ok($help_exception, "Script died correctly when given help flag");
我的輸出看起來非常相似:
1..4
ok 1 - use scripts::scriptname;
ok 2
ok 3
# Looks like you planned 4 tests but ran 3.
# Looks like your test exited with 1 just after 3.
幫助標誌的測試是測試4,它看起來像我的腳本正在退出而不觸發Try :: Tiny try catch塊。有沒有辦法解決這個問題,還是應該以不同的方式寫我的測試?
非常感謝你的迴應,你會如何本地化CORE :: GLOBAL :: EXIT覆蓋? – Moses
使用「本地」內置。 – rafl