testing - Play Framework 重定向到其他方法在测试中返回 303

标签 testing playframework playframework-2.5

我有 2 个端点:GET/users/meGET/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/

相关文章:

ruby-on-rails - rails-controller-testing gem

iOS In App Purchase 沙盒测试说我密码错误

c# - CodedUI 测试不等待控件存在

scala - 如何在 scala 中迭代并将元素添加到列表中而不更改状态

mysql - 游戏框架 2.5.4。无法连接到数据库 [db] (MySql)

javascript - 如何在一个命令/进程中执行服务器和客户端测试?

intellij-idea - 如何在 IntelliJ 14+ 中正确导入具有所有集成功能(运行、调试、测试)的 Play 2+ 项目?

scala - 使用 Play! 中的 Scala 模板scala.js 中的框架

playframework - 名称为 'play' 的 EhCache 实例已存在

scala - 将依赖注入(inject)和继承与 Play 2.5 相结合