के खिलाफ तुलना करते समय अधिक is_deeply सुंदर-प्रिंट सरणी/हैशफ्रे नहीं करता है जब परीक्षण :: एक दूसरे के साथ arrayrefs और हैशफ्रिक्स की तुलना में अधिक तुलना करता है, इसी तरह का निदान संदेश वास्तव में जानकारीपूर्ण होता है और पहली अनुक्रमणिका दिखाता है जहां संरचनाएं भिन्न होती हैं घोंसले की गहराई के बावजूद। हालांकि, जब यह एक सरणी या हैशफ की तुलना एक साधारण स्केलर से कर रहा है, तो यह डायग्नोस्टिक संदेश में एक स्ट्रिंगफाइड स्केलर (स्मृति पता और संदर्भ प्रकार के साथ) उत्पन्न करता है, जो व्याख्या करना कठिन होता है।टेस्ट :: स्ट्रिंग
क्या टेस्ट :: कॉन्फ़िगर करने का कोई तरीका है कस्टम प्रिंट में सरणी या हैशफ्स को कस्टम तरीके से (जैसे डेटा :: डम्पर का उपयोग करना)?
यहां दो परीक्षण मामलों के साथ एक उदाहरण दिया गया है। सबसे पहले आपको अपने कार्यक्रम में मौजूद कुछ अंतर्दृष्टि प्रदान करता है लेकिन अप्रत्याशित। दूसरा स्ट्रिंग और arrayref के बीच एक प्रकार के मिलान के उपयोगकर्ता को सूचित करता है, लेकिन arrayref में किसी भी आइटम को मुद्रित नहीं करता है।
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 2;
is_deeply(
{
a => [5],
},
{
a => [5, 6, 8],
},
'compare two hashrefs structurally (very informative output)',
);
is_deeply(
[5, 6, 8],
"",
'compare two "incompatible" values structurally (uninformative output)',
);
और नल उत्पादन:
1..2
not ok 1 - compare two hashrefs structurally (very informative output)
# Failed test 'compare two hashrefs structurally (very informative output)'
# at test-more-failure.pl line 6.
# Structures begin differing at:
# $got->{a}[1] = Does not exist
# $expected->{a}[1] = '6'
not ok 2 - compare two "incompatible" values structurally (uninformative output)
# Failed test 'compare two "incompatible" values structurally (uninformative output)'
# at test-more-failure.pl line 16.
# Structures begin differing at:
# $got = ARRAY(0x7fe66b82cde8)
# $expected = ''
# Looks like you failed 2 tests of 2.
टेस्ट में is_deeply
के कार्यान्वयन को देखते हुए :: अधिक है, वहाँ एक कस्टम सुंदर-प्रिंटर का उपयोग या शब्दाडंबर कॉन्फ़िगर करने के लिए तरीका हो प्रतीत नहीं होता है मॉड्यूल के। कम से कम कोई भी मेरे लिए स्पष्ट नहीं है।
यहाँ क्या होता है जब हम एक संदर्भ और गैर संदर्भ तुलना है:
https://metacpan.org/source/EXODIST/Test-Simple-1.302062/lib/Test/More.pm#L1121
यह _format_stack(...)
https://metacpan.org/source/EXODIST/Test-Simple-1.302062/lib/Test/More.pm#L1139
यदि आप डेटा संरचनाओं के साइड-बाय-साइड डिफ को चाहते हैं, तो यह वास्तव में अच्छा है। यदि आप विकास में हैं, हालांकि, और डेटा संरचना बदल गई है, तो आप केवल परीक्षण मॉड्यूल में परिभाषा को प्रतिस्थापित करना चाहते हैं, 'डायग समझाएं $ मिल गया' कॉपी और पेस्ट करने के लिए एक आसान आउटपुट प्रदान करता है। – Randall