2015-02-15 5 views
7

यदि आप सूचियों या मानचित्रों या किसी अन्य जटिल संरचनाओं से मेल खाते हैं तो क्या दिया गया है और क्या अपेक्षित है के बीच अंतर देखने के लिए उपयोगी है। उदाहरण के लिए:स्कैलाटेस्ट में दिए गए और अपेक्षित के बीच अंतर कैसे दिखाएं?

Map("a" -> 1, "b" -> 2, "c" -> 3) should equal Map("a" -> 1, "b" -> 5, "c" -> 3) 

// ScalaTest output: 
[info] Map("a" -> 1, "b" -> 2, "c" -> 3) did not equal Map("a" -> 1, "b" -> 5, "c" -> 3) (Test.scala) 
[info] org.scalatest.exceptions.TestFailedException: 
[info] ... 

आप मैन्युअल रूप से दोनों मैप्स के माध्यम से नज़र उन दोनों के बीच अंतर है, बड़ा अपने संग्रह यह कठिन हो जाता है हो जाता है पता लगाने के लिए करना होगा।

RSpec में दूसरे हाथ पर आपको मिल जाएगा:

expect({a: 1, b: 2, c: 3}).to match({a: 1, b: 5, c: 3}) 

// RSpec output: 
Failure/Error: it { expect({a: 1, b: 2, c: 3}).to match({a: 1, b: 5, c: 3})} 
    expected {:a=>1, :b=>2, :c=>3} to match {:a=>1, :b=>5, :c=>3} 
    Diff: 
    @@ -1,4 +1,4 @@ 
    :a => 1, 
    -:b => 5, 
    +:b => 2, 
    :c => 3, 

# ./spec/test_spec.rb:2:in `block (2 levels) in <top (required)>' 

क्या यह संभव है ScalaTest के साथ इसी तरह कुछ है करने के लिए?

उत्तर

2

मुझे विश्वास नहीं है कि आपके जैसा वर्णन बिल्कुल ठीक है। ScalaTest में आप जो निकटतम हो सकते हैं वह String के लिए अंतर्निहित अंतर है।

यह आदर्श नहीं है, लेकिन आपके नक्शे के अंत में toString जोड़ना थोड़ा बेहतर आउटपुट देगा। इसी प्रकार, पर pretty विधि का उपयोग करना वही काम करता है।

उदाहरण के लिए:

Map("a" -> 1, "b" -> 2, "c" -> 3).toString shouldBe Map("a" -> 1, "b" -> 5, "c" -> 3).toString 

// scalatest output 
[info] "Map(a -> 1, b -> [2], c -> 3)" was not equal to "Map(a -> 1, b -> [5], c -> 3)" 
[info] org.scalatest.exceptions.TestFailedException: ... 

यह scalatest-users email thread मिलती-जुलती सवाल पूछता है, और बिल वेनर्स, ScalaTest के लेखक द्वारा प्रतिक्रियाओं है।

+0

मुझे आश्चर्य है कि स्कैलाटेस्ट 3.0 (अब स्नैपशॉट चरण में) इस में सुधार प्रदान करेगा। यहां एक वीडियो -> https://skillsmatter.com/skillscasts/6021-scalatest-and-scalactic-3-0 – akauppi

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