首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Finatra FeatureTests:如何手动反序列化返回的json

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

Stack Overflow用户
提问于 2017-07-09 14:24:45
回答 1查看 219关注 0票数 1

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

目前,我的功能测试如下所示

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

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

我将我的代码更改为

代码语言:javascript
复制
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“自动”处理json序列化和反序列化。但在我的例子中,我想手动执行此操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-10 23:56:33

您可以通过调用(使用您的示例) server.mapper来使用FinatraObjectMapper。它包装了一个Jackson ObjectMapper,如果您想使用Jackson库而不使用任何Finatra附加组件,则可以使用它。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44993616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档