2013-09-27 50 views
0

我想用Specs2測試Json,但我總是得到一個解析錯誤。在Scala中測試JSON與spec2

也許是因爲我使用JObect?

val j: JObject = "hello" -> "world" 
j must */("hello") 

這是錯誤:

Search_fields

Could not parse: 
JObject(List(JField(hello,JString(world)))) 
java.lang.Exception: Could not parse: 
JObject(List(JField(hello,JString(world)))) 
    at net.liftweb.echidnasearch.QuerySearchSpec$$anonfun$1$$anonfun$apply$124.apply(QuerySearchSpec.scala:496) 
    at net.liftweb.echidnasearch.QuerySearchSpec$$anonfun$1$$anonfun$apply$124.apply(QuerySearchSpec.scala:485) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 

MatchQuery 

感謝

+0

這是編譯時錯誤還是運行時(spec2)?請粘貼完整的例外。 – VasyaNovikov

+0

謝謝@VasyaNovikov異常更新 – YoBre

+0

再次,這是一個編譯錯誤,還是一個運行時? – VasyaNovikov

回答

0

如果你的意思編譯錯誤,然後檢查全部進口,然後再試一次:

import net.liftweb.json.JsonDSL._ 
import net.liftweb.json._ 
val t:JObject = ("a" -> "b") 

我在控制檯中試過,它的工作原理:

scala> val t:JObject = ("a" -> "b") 
t: net.liftweb.json.JObject = JObject(List(JField(a,JString(b)))) 
+0

我也有同樣的情況。在編譯中,我沒有錯誤。我的問題是在運行時。 – YoBre

+0

我不知道spec2的語法,但是像這樣的東西應該可以工作:'t。\(「a」)should ===「b」'。在你的代碼中,我只看到「世界」一詞(不應該將它與?相比較),而我根本沒有看到方法「。\」。 – VasyaNovikov

1

specs2 JSON的匹配是Matcher[String]。我懷疑你所看到的是試圖解析不能被specs2匹配器解析的Lift Json對象的.toString表示。您應該匹配Lift Json對象的適當字符串表示。