2017-07-09 25 views
1

我閱讀了Finatra入門指南,並且我能夠編寫HelloWorld服務及其功能測試。Finatra FeatureTests:如何手動反序列化返回的json

目前我特性測試看起來像

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到一個對象。我應該只是拉入任何json庫像circe?然後反序列化對象?

或者我可以使用進入Finatra的傑克遜框架。

在我能找到的所有例子中,我看到Finatra「自動」處理json序列化和反序列化。但在我的情況下,我想手動執行此操作。

回答

1

您可以通過撥打(使用您的示例)server.mapper來使用FinatraObjectMapper。如果你想使用沒有任何Finatra插件的Jackson庫,那麼可以使用Jackson ObjectMapper

或者您可以導入您的其他JSON庫。如果你正在使用SBT,您可以限制庫代碼的某些領域,所以如果你想只在測試代碼中使用瑟茜,你可以添加以下到您的build.sbt

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