2012-06-04 14 views
5

क्या पर्ल कॉल के लिए परीक्षण लिखने का कोई तरीका है जिसे आप मरने की उम्मीद करते हैं? मैं यह सत्यापित करना चाहता हूं कि कुछ कॉल खराब प्रारूपित इनपुट के साथ मर जाएंगी।पर्ल परीक्षणों में मौतों की योजना

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")); 
} 

उत्तर

6

Test::Exception देखें:

use Test::Exception; 
dies_ok { $foo->method } 'expecting to die'; 
+2

मैं [टेस्ट :: घातक] (http://search.cpan.org/perldoc?Test%3a%3aFatal) के रूप में मैं में कहा, टेस्ट :: अपवाद से उपयोग में आसान होने के लिए [लगता है मेरी एक ही विषय पर पहले के प्रश्न का उत्तर] (http://stackoverflow.com/a/4522172/8355)। – cjm

5

आप एक eval { ... } ब्लॉक में परीक्षण लपेट और जाँच करें कि क्या [email protected] स्थापित किया गया था।

eval { test_thats_supposed_to_fail() }; 
ok([email protected] , "test failed like it was supposed to"); 
+0

पसंदीदा रूप से आपका परीक्षण अपेक्षित संदेश के साथ मरना चाहिए, ताकि आप अपने अस्तित्व का परीक्षण करने के बजाय $ @ के मूल्य की जांच कर सकें। –

संबंधित मुद्दे