मैं मॉड्यूल :: स्टार्टर का उपयोग कर एक नया मॉड्यूल बनाने का अभ्यास कर रहा हूं। मैंने पैकेज के लिए कुछ टेस्ट केस लिखे हैं, और वे कभी-कभी ठीक चलते हैं।मॉड्यूल :: स्टार्टर द्वारा किए गए मॉड्यूल को कैसे डिबग किया जाए?
हालांकि मैंने देखा वहाँ दो समस्याएं हैं:
जब परीक्षण मामलों असफल, मैं समारोह में कुछ प्रिंट बयान परीक्षण किया जा रहा डाल चाहते हैं। मैं
make test
चला गया और यह केवल मुझे बताता है कि मेरे परीक्षण के मामले विफल हुए, यह मेरा मुद्रित आउटपुट नहीं दिखाता है, इसके बावजूद मुझे सचमुच यकीन है कि प्रिंट स्टेटमेंट तक पहुंच गए हैं।कहें कि मेरे पास एक समारोह का परीक्षण करने के लिए तीन परीक्षण मामले हैं, मैंने परीक्षण के मामलों में एक प्रिंट स्टेटमेंट लगाया है, जब परीक्षण के मामले चलते हैं, तो यह रिपोर्ट करता है कि तीन परीक्षण मामलों में से केवल 1 चलाया गया था। अगर मैं प्रिंट स्टेटमेंट हटा देता हूं, तो सभी तीन टेस्ट केस चलाए जाएंगे। ऐसा क्यों है?
# package declaration and stuff... sub get_in { my ($hash, @path) = @_; my $ref = $hash; print 'lol'; # This is the troublesome print statement. Remove this statement and all three test cases will run and pass foreach (@path) { if (ref($ref) eq 'HASH' && exists $ref->{$_}) { $ref = $ref->{$_}; } else { return undef; } } return $ref; }
यह परीक्षण मामलों है:
यहाँ मेरी कोड है
use Test::More tests => 3;
use strict;
use warnings;
use diagnostics;
require_ok('Foo::Doc');
ok(Foo::Doc::get_in({ 'a' => { 'b' => { 'c' => 101 } } }, 'a', 'b', 'c') == 101);
ok(@{ Foo::Doc::get_in({ 'a' => { 'b' => { 'c' => [ 1, 2, 3 ] } } }, 'a', 'b', 'c') } == @{ [ 1, 2, 3 ] });
यह प्रश्न मॉड्यूल :: स्टार्टर के लिए वास्तव में विशिष्ट नहीं है। मानक पर्ल प्रोजेक्ट लेआउट में टेस्ट :: सरल या टेस्ट :: अधिक या कुछ आउटपुट टेस्ट सफलता या विफलता के उपयोग से '* .t' परीक्षणों के साथ' t' निर्देशिका शामिल है। प्रत्येक पर्ल बिल्ड टूलकिट आपके परीक्षण चलाने और पर्ल कोर में दिए गए टूल का उपयोग करके मानक रिपोर्ट में परिणामों को आउटपुट करने के लिए टूल प्रदान करता है। – zostay