1

我阅读了 Finatra 入门指南,并且能够编写 HelloWorld 服务及其功能测试。

目前我的功能测试看起来像

server.httpPost(
   path = "/hi",
   postBody = """{"name": "Foo", "dob": 136190040000}""",
   andExpect = Ok,
   withBody = """{"msg":"Hello Foo. You are 15780 days old today"}""")

这工作正常,我的测试通过了。但是我的要求是我提取服务器返回的 json,然后手动对返回的对象执行断言。

我将代码更改为

val response = server.httpPost(
   path = "/hi",
   postBody = """{"name": "Abhishek", "dob": 136190040000}""",
   andExpect = Ok,
   withBody = """{"msg":"Hello Abhishek. You are 15780 days old today"}""")
  val json = response.contentString

这也有效,我可以看到在变量 json 中返回的 json。

我的问题是,如果我必须将此 json 反序列化为一个对象。我应该像 circe 那样引入任何 json 库吗?然后反序列化对象?

或者我可以使用 Finatra 内部的杰克逊框架。

在我能找到的所有示例中,我看到 Finatra“自动”处理 json 序列化和反序列化。但就我而言,我想手动执行此操作。

4

1 回答 1

1

您可以FinatraObjectMapper通过调用(使用您的示例)来使用server.mapperObjectMapper如果您想在没有任何 Finatra 附加组件的情况下使用 Jackson 库,则可以使用它。

或者,您可以导入不同的 JSON 库。如果您使用 SBT,您可以将库限制在代码的某些区域,因此如果您只想在测试代码中使用 circe,您可以将以下内容添加到您的 build.sbt

"org.scalatest" %% "scalatest" % "2.2.6" % "test"

于 2017-07-10T15:56:33.197 回答