4

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")
    }
  }
}

期待される本文は、JSON サポートを通じて Scalatra によってシリアル化された JSON です。私の質問は、ボディを scala の同じケース クラス インスタンスに変換し、テストを大幅に簡素化するにはどうすればよいかということです。

4

2 に答える 2

2

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")

を呼び出して、 s (JSON ドキュメントの json4s の内部表現) から.valuesプリミティブな Scala 値 ( Strings、Ints など)を取得できます。JValue

これらすべての例については、 json4s の紹介を参照してください。

于 2013-03-12T10:37:30.583 に答える