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