Finatra FeatureTests:如何手动反序列化返回 json

Finatra FeatureTests: How to manually deserialize returned json

我阅读了 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 中的 jackson 框架吗?

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

您可以通过调用(使用您的示例)server.mapper 来使用 FinatraObjectMapper。如果您想在没有任何 Finatra 附加组件的情况下使用 Jackson 库,那么它包装了一个 Jackson ObjectMapper

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

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