播放框架重定向到其他方法 returns 303 在测试中
Play framework redirecting to other method returns 303 in test
我有 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)
}
这工作正常,我没有收到邮递员的 303(我认为)。但是,以下测试失败,因为状态为 303:
val result = userController.getCurrentUser()(authenticatedRequest)
status(result) mustBe OK
这是测试框架的一些怪癖吗?我认为我使用的语法是用于静默内部重定向。我实际上不想 return 向客户发送 303。
我如何测试这个以及我编写的方法是否执行静默内部重定向?
您的结果永远不会正常(相当于 http 状态 200),因为您 returning 的两个状态是 303(重定向)和 500(InternalServerError)。
您为什么不想 return 重定向状态?
如果你想return一个OK状态,你可以替换这行:
Redirect(routes.UserController.getUserById(currentUserId))
通过方法getUserById
。
我有 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)
}
这工作正常,我没有收到邮递员的 303(我认为)。但是,以下测试失败,因为状态为 303:
val result = userController.getCurrentUser()(authenticatedRequest)
status(result) mustBe OK
这是测试框架的一些怪癖吗?我认为我使用的语法是用于静默内部重定向。我实际上不想 return 向客户发送 303。
我如何测试这个以及我编写的方法是否执行静默内部重定向?
您的结果永远不会正常(相当于 http 状态 200),因为您 returning 的两个状态是 303(重定向)和 500(InternalServerError)。
您为什么不想 return 重定向状态?
如果你想return一个OK状态,你可以替换这行:
Redirect(routes.UserController.getUserById(currentUserId))
通过方法getUserById
。