2010-09-11 8 views
7

के साथ अनुक्रम की सामग्री की जांच करें मेरे यूनिट परीक्षण में, मैं व्यक्त करना चाहता हूं कि एक गणना (परिणाम) अनुक्रम परिणाम मानों का एक पूर्वनिर्धारित अनुक्रम उत्पन्न करता है। लेकिन अनुक्रम कंटेनर के वास्तविक कार्यान्वयन प्रकार के बारे में कुछ भी ग्रहण किए बिना।स्कैलाटेस्ट: कंधमैचर

और मैं अपने इरादे को स्पष्ट और आत्म-स्पष्टीकरण देना चाहता हूं।
अगर मैं ScalaTest की "ShouldMatchers" का उपयोग करें और

val Input22 = ... 
calculation(Input22) should equal (Seq("x","u")) 

लिखने की कोशिश ... तो मैं सरल समानता के साथ मुसीबत में, मिलता है, क्योंकि calculation(..) एक ArrayBuffer वापस कर सकती है, जबकि Seq("x","u") एक सूची है

+1

याद रखें कि चेक बॉक्स रूपरेखा पर क्लिक करके आप सही जवाब दे सकते हैं। –

उत्तर

2
import org.specs.matcher.IterableMatchers._ 
calculation(Input22) should beTheSameSeqAs (Seq("x","u")) 
+0

आह धन्यवाद ... यह अच्छा है – Ichthyo

+0

लेकिन मेरे वर्तमान कार्यक्रम में, मेरे पास * चश्मा * पर निर्भरता नहीं है और मैं इसे जोड़ने में अनिच्छुक हूं। इसलिए मैंने अपना खुद का कस्टम मैचर लागू किया, जिसने मुझे बिल्कुल वही समाधान दिया। देखें http://www.scalatest.org/scaladoc/doc-1.2/org/scalatest/matchers/Matcher.html – Ichthyo

+0

क्या आपको चश्मे से डर है? यह काफी उत्कृष्ट है। इसे गले लगाने। – Synesso

4

क्या आप 2.7.7 का उपयोग कर रहे हैं? 2.8 विभिन्न Seq के बराबर तत्वों (उसी क्रम में) के साथ में बराबर होना चाहिए:

scala> import org.scalatest.matchers.ShouldMatchers._ 
import org.scalatest.matchers.ShouldMatchers._ 

scala> import scala.collection.mutable.ArrayBuffer 
import scala.collection.mutable.ArrayBuffer 

scala> val list = List(1, 2, 3) 
list: List[Int] = List(1, 2, 3) 

scala> val arrayBuffer = ArrayBuffer(1, 2, 3) 
arrayBuffer: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3) 

scala> list == arrayBuffer 
res2: Boolean = true 

scala> arrayBuffer == list 
res3: Boolean = true 

scala> list should equal (arrayBuffer) 

scala> arrayBuffer should equal (list) 

एक अपवाद 2.8 में इस नियम के सरणियों है, जो केवल अन्य सारणियों के बराबर हो सकता है, क्योंकि वे जावा सरणियों हैं । (जब आप कॉल करते हैं तो जावा सरणी को संरचनात्मक रूप से तुलना नहीं की जाती है। लेकिन स्कैलाटेस्ट मैचर्स दो सरणी पर संरचनात्मक समानता करते हैं।)

+0

की मूल बातें के साथ पहले से लड़ने वाले लोगों को समझाए जाने के लिए चश्मा अभी तक एक और लाइब्रेरी होगी, जो स्केलटेस्ट के पिता से खुद के जवाब से बेहतर है? =) –

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