我正在使用 Scalatra 为一些 JSON RESTful API 编写测试,一个片段如下所示
class MyScalatraServletTests extends ScalatraSuite with FunSuite {
test("An valid request should return 200") {
get ("/rest/json/accc/B1Q4K3/1") {
status should equal (200)
body should include ("TEST")
}
}
}
正文 预期是 Scalatra 通过其 JSON 支持序列化的 JSON。我的问题是如何转换 正文 回到scala中的同一个case类实例,大大简化了测试?
最佳答案
json4s 可以直接用于从 JSON 值中提取案例类。
import org.json4s._
import org.json4s.jackson.JsonMethods._
val parsedBody = parse(body)
parsedBody.extract[MyCaseClass]
您还可以使用类似 XPath 的表达式来查询 JSON。
val parsedBody = parse(body)
val email = (parsedBody \ "user" \ "email").values
email should be ("example@example.org")
您可以调用
.values
从 String
获取原始 Scala 值(Int
s、JValue
s 等) s(json4s 的 JSON 文档的内部表示)。见json4s introduction所有这些的例子。
关于json - Scalatra 测试 RESTful JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157045/