在Scala中使用spec2测试JSON

时间:2013-09-27 11:15:13

标签: json scala lift specs2 lift-json

我正在尝试使用Specs2测试Json,但我总是得到一个解析错误。

也许是因为我使用了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

感谢

2 个答案:

答案 0 :(得分:1)

specs2 json匹配器为Matcher[String]。我怀疑你所看到的是尝试解析由于specs2匹配器无法解析的Lift Json对象的.toString表示。您应该匹配Lift Json对象的正确String表示。

答案 1 :(得分: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))))