specs2

2012-09-20 32 views
6

के साथ सीईसी खाली परीक्षण मैं कैसे देख सकता हूं कि Seq[String] खाली है या स्कैला में specs2 का उपयोग नहीं कर रहा है? मैं seq must be empty या seq.length must be greaterThan(0) का उपयोग कर रहा हूं लेकिन मैं हमेशा टाइप मिस्चैच त्रुटियों के साथ समाप्त होता हूं।specs2

ret is Seq[String] 

ret.length must be greaterThan(0) 

[error] ApiTest.scala:99: type mismatch; 
[error] found : Int 
[error] required: org.specs2.matcher.Matcher[String] 
[error]   ret.length must be greaterThan(0) 
+0

यदि आप सटीक कोड और संकलक द्वारा दिए गए त्रुटि संदेश को पोस्ट करते हैं तो आप अधिक भाग्यशाली हो सकते हैं। –

+0

हां कृपया एक और पूरा उदाहरण जोड़ें। मुझे लगता है कि आपका मामला "शास्त्रीय" प्रकार अनुमान समस्या का एक उदाहरण हो सकता है जहां आपके पास लगातार नए मैटल एक्सप्रेशन न्यूलाइन द्वारा अलग किए गए हैं, जैसे "ret.length अधिक होना चाहिए (0) \ n ret.lenght होना चाहिए LowerThan (10)" (यदि ऐसा है तो मैं इस टिप्पणी को उचित उत्तर के रूप में संपादित करूंगा) – Eric

उत्तर

1

specs2 मिलान have size का उपयोग करें। चूंकि आकार नकारात्मक नहीं हो सकता है, यदि यह शून्य नहीं है, तो यह शून्य से अधिक होना चाहिए। इसलिए, हम इसका उपयोग कर सकते थे:

ret must not have size (0) 
5

मुझे लगता है कि टाइप मिस्चैच त्रुटि आपके द्वारा पोस्ट की गई किसी अन्य कोड के कारण होती है।

आपका उदाहरण सिर्फ साथ काम करना चाहिए:

ret must not be empty 

मैंने कोशिश की और पुष्ट कर दिया है सही ढंग से काम किया जाना चाहिए:

"Seq beEmpty test" should { 
    "just work" in { 
     Seq("foo") must not be empty 
    } 
    } 

यदि आप परीक्षण प्रति कई दावे का उपयोग मुसीबत में पड़ सकता है, के लिए उदाहरण निम्नलिखित संकलित नहीं करता है:

"Seq beEmpty test" should { 
    "just work" in { 
    List() must be empty 
    Seq("foo") must not be empty 
    } 
} 

जो अप्रत्याशित है, लेकिन आसानी से तय किया गया है कंपाइलर की मदद करना:

"Seq beEmpty test" should { 
    "just work" in { 
    List() must beEmpty 
    Seq("foo") must not beEmpty 
    } 
} 
+0

डिफ़ॉल्ट रूप से 'beEmpty' का उपयोग न करने का कोई कारण नहीं है? – OrangeDog

+0

@ ऑरेंजडॉग केवल 'beEmpty' पर 'रिक्त' होने का लालित्य एक तर्क हो सकता है। वे अर्थात् वही हैं। – iwein