2015-11-19 92 views
2

我正在嘗試編寫一個perl單元測試。我能夠測試它的快樂案例情景。但是,如果在方法中生成錯誤,則使用Carp:confess "<message>"打印錯誤。在我的測試中,我無法抓住這個案例。 我嘗試使用Perl鯉魚:承認單元測試

dies_ok(<method call>, 'Expected Error');

但測試用例仍然失敗。它打印傳遞給鯉魚::懺悔的消息,然後打印

Looks like your test exited with 111 before it could output anything. Dubious, test returned 111 (wstat 28416, 0x6f00)

有沒有辦法我能趕上嗎?我什至嘗試throws_ok但不工作。

請指導我如何理解這些錯誤。我是否錯誤地使用這些dies_okthrows_ok

+2

您是否將方法調用包裝在匿名子類中? – Miller

+0

不,我沒有......我做到了這一點,它的工作......你能解釋爲什麼一個匿名子被要求封裝呼叫?我不清楚... 你也可以請解釋作爲答案,所以我可以接受它。 謝謝:) – learningMyWayThru

回答

1

您可以在eval表達式後檢查$ @。

use strict; 
use warnings; 

use Test::More; 

use Carp qw(confess); 

sub err { confess('Bad thing'); } 

eval { err }; 
like([email protected], qr/^Bad thing/, "confess('Bad thing')"); 

done_testing();