0
我有2個端點:GET /users/me
和GET /users/:id
。我想將第一個重定向到第二個,傳遞當前用戶的ID。所以我做了這個方法:玩框架重定向到其他方法返回303在測試
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(我認爲)與郵遞員。
val result = userController.getCurrentUser()(authenticatedRequest)
status(result) mustBe OK
這是測試框架的一些怪癖,但因爲狀態是303以下測試失敗?我認爲我使用的語法是無聲的內部重定向。我實際上並不想把303交給客戶。
我該如何測試,並且我寫的方法執行無聲的內部重定向?
我不想返回303,因爲我不想額外往返。此外,您所建議的替換不起作用,因爲'getUserById'也是一個異步操作控制器,並且出現'Object的表達式不符合預期的類型結果'的錯誤。我正在尋找一種方法,一種控制器方法透明地轉發到另一個控制器方法,而無需返回303。你知道這是可能的嗎? – jbrown
不,如果沒有使用rooting系統,不可能返回303。我想告訴你的是直接使用UserController.getUserById使用的方法(如果沒有使用的方法,請在服務中提取一個方法並使其它由UserController.getUserById和getCurrentUser使用)。 – Simon
好的,謝謝...... – jbrown