2012-05-07 15 views
44

मैंने Scala Koans के माध्यम से अपना रास्ता काम करना शुरू किया, जो यूनिट परीक्षणों के एक सूट के आसपास व्यवस्थित किया गया है जिसमें रिक्त स्थान शामिल हैं। (इस विचार को एक समान रूबी कोन्स प्रोजेक्ट के बाद बनाया गया था।) आप एक परीक्षण चलाने वाले एसबीटी उपकरण को शुरू करते हैं , और यह सलाह देती है:स्कैला कोअन्स में === (ट्रिपल-बराबर) ऑपरेटर क्या है?

 
[info] + ***************************************** 
[info] + 
[info] + 
[info] + 
[info] + Please meditate on koan "None equals None" of suite "AboutEmptyValues" 
[info] + 
[info] + 
[info] + 
[info] + ***************************************** 

... और इसलिए आप इस इकाई परीक्षण पर नज़र जाना है और इसे कहते हैं:

 
test("None equals None") { 
    assert(None === __) 
} 

... और, ध्यान के बाद, क्या आपको पता है कि आप में भरना चाहिए इस तरह खाली:

 
test("None equals None") { 
    assert(None === None) 
} 

... और फिर यह अगले यूनिट परीक्षण पर चलता है।

मेरा प्रश्न, हालांकि, यह === ऑपरेटर क्या है? मुझे इसे कहीं भी नहीं मिल रहा है। क्या यह एक डीएसएल ऑपरेटर स्कैला कोन्स प्रोजेक्ट में ही परिभाषित है? या यह स्कालाटेस्ट ढांचे का हिस्सा है? या स्कैला में उचित?

उत्तर

70

यह ट्रिपल-बराबर ऑपरेटर ScalaTest से है। इस पृष्ठ पर एक नज़र डालें: Getting Started with FunSuite। इसे कहते हैं:

ScalaTest आप स्काला के दावे सिंटैक्स का उपयोग करने देता है, लेकिन परिभाषित करता है एक ट्रिपल आप बेहतर त्रुटि संदेश देने के लिए ऑपरेटर (===) के बराबर होती है। निम्नलिखित कोड आप केवल यह दर्शाता है कि एक अभिकथन में विफल रहा है एक त्रुटि देना होगा:

assert(1 == 2) 

ट्रिपल बराबरी का उपयोग करने के बजाय आप अधिक सूचना वाले त्रुटि संदेश देना होगा, "1 नहीं था बराबर 2":

assert(1 === 2) 
संबंधित मुद्दे