scala - Is it possible to use assertResult to check arrays for equallity in ScalaTest -


स्काला संग्रह की अपेक्षित मूल्य की पुष्टि करते समय, assertResult विधि सुविधाजनक है:

< पूर्व में "सूची" को "सही ढंग से जेनरेट किया जाना चाहिए" {assertResult (सूची (10, 20)) में {// कुछ कोड चाहिए जो आउटपुट सूची (10, 20)}}

अगर कुछ गलत हो जाता है, तो अच्छा त्रुटि संदेश उत्पन्न होता है:

  अपेक्षित सूची (10, 20), लेकिन सूची मिली (10, 30)  

दुर्भाग्य से, यह एरे के लिए काम नहीं करता है, क्योंकि == ऑपरेटर पहचान की पहचान करता है, समानता नहीं है (इस व्यवहार के पीछे कारणों से बहुत चर्चा हुई थी, उदाहरण के लिए:)।

तो, एरे के लिए इसी तरह की जांच निम्न त्रुटि संदेश उत्पन्न करती है:

  अपेक्षित अर्रे (10, 20), लेकिन मिल गया ऐरे (10, 20)  

कारण, का उपयोग करना संभव है matcher:

  "सरणी" को सही ढंग से "उत्पन्न" होना चाहिए (अर्रे (10, 20) ) बराबर होना चाहिए {// कुछ अरै (10, 20)}}  

लेकिन यह कम सुविधाजनक है, क्योंकि यह अधिक समानता जांच है कि एक उम्मीद सत्यापन:

<पूर्व> सरणी (10, 20) बराबर नहीं किया गया अर्रे (10, 30)

क्या स्केलेस्ट में एरे के लिए एक दावेदारी की जांच है जो स्पष्ट रूप से अपेक्षित परिणाम को वास्तविक परिणाम से अलग करती है ?

वाह, अच्छी तरह से मैं वास्तव में एक बग मानता हूँ, क्योंकि यह बाकी के दावे के साथ असंगत है । यह बग लगभग छह या सात साल के लिए असंसूचित रहता था, यद्यपि। मैं इसे ठीक कर दूँगा, लेकिन बीच में आप क्या कर सकते हैं कॉल है। उदाहरण के लिए: आप Arrays के साथ == के लिए क्या करेंगे, उदाहरण के लिए:

  scala & gt; अर्रे (1, 2) == सरणी (1, 2) रेस 12: बूलियन = झूठी स्केले & gt; अर्रे (1, 2)। डीप == अर्रे (1, 2)। Res13 खोलें: बूलियन = सच स्कला & gt; AssertResult (अर्रे (1, 2)) {अर्रे (1, 2)} org.scalatest.exceptions.TestFailedException: अपेक्षित अर्रे (1, 2), लेकिन मिला Array (1, 2) ... scala & gt; AssertResult (ऐरे (1, 2)। डीप) {ऐरे (1, 2)। डीप}  

Comments