我有 2 个端点:GET/users/me
和 GET/users/:id
。我想将第一个重定向到第二个,传递当前用户的 ID。所以我做了这个方法:
def getCurrentUser = SecuredAction { implicit request =>
request.identity.id.map { currentUserId =>
logger.info(s"Returning current user $currentUserId's profile")
Redirect(routes.UserController.getUserById(currentUserId))
}.getOrElse(InternalServerError)
}
这工作正常,我没有收到 postman 的 303(我认为)。但是,以下测试失败,因为状态为 303:
val result = userController.getCurrentUser()(authenticatedRequest)
status(result) mustBe OK
这是测试框架的一些怪癖吗?我认为我使用的语法是用于静默内部重定向。我实际上并不想向客户返回 303。
我如何测试它以及我编写的方法是否执行静默内部重定向?
最佳答案
您的结果永远不会正常(相当于 http 状态 200),因为您返回的两个状态是 303(重定向)和 500(InternalServerError)。
为什么不想返回重定向状态?
如果你想返回一个OK状态,你可以替换这一行:
Redirect(routes.UserController.getUserById(currentUserId))
通过方法getUserById
。
关于testing - Play Framework 重定向到其他方法在测试中返回 303,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41166821/