0
在斯卡拉我有一個呼叫服務控制器,這是返回我Future[WSResponse]
。我想確保服務返回有效的結果,所以發送Ok(..)
否則發送BadRequest(...)
。我不認爲我可以使用map
。任何其他建議?從@alextsc處理未來的[WSResponse]找到成功或錯誤狀態
def someWork = Action.async(parse.xml) { request =>
val result:Future[WSResponse] = someService.processData(request.body.toString())
//Need to send back Ok or BadRequest Message
}
編輯 解決方案是工作的罰款。現在轉移到測試我現有的測試失敗。它越來越400,而不是200
test("should post something") {
val requestBody = <value>{UUID.randomUUID}</value>
val mockResponse = mock[WSResponse]
val expectedResponse: Future[WSResponse] = Future.successful(mockResponse)
val request = FakeRequest(Helpers.POST, "/posthere").withXmlBody(requestBody)
when(mockResponse.body).thenReturn("SOME_RESPONSE")
when(someService.processData(any[String])).thenReturn(expectedResponse)
val response: Future[Result] = call(controller.someWork , request)
whenReady(response) { response =>
assert(response.header.status == 200)
}
}
我的測試被打破,因爲我得到400,而不是200.我做錯了什麼? OP用測試編輯。 –
@αƞjiβ您從未設置模擬的WSResponses狀態碼,因此它默認爲0.現在,只有當狀態爲200 **時,上面的映射才映射到Ok **。在所有其他情況下(包括狀態0),它默認爲BadRequest。 – alextsc