3
我已經寫了一個動作構建器,並將這個新動作應用到我的控制器上。Scala Play 2.4如何測試動作組合(使用動作構建器和動作過濾器)
下面是我的代碼:
class AuthAction @Inject()(authService: AuthService) {
def AuthAction(userId: Int) = new ActionBuilder[Request] with ActionFilter[Request] {
def filter[A](request: Request[A]): Future[Option[Result]] = {
request.headers.get("Authorization").map(header => {
authService.isAuth(header).flatMap {
case true => Future.successfuly(None)
case false => Future.successfuly(Some(Forbidden))
}
})
}
}
}
class UserController @Inject()(auth: AuthAction, xxxService: XxxService) extends Controller {
def xxx(userId: Int) = auth.AuthAction(userId).async { implicit request =>
xxxService.xxx().map.......
}
}
不使用自定義的行動,我可以輕鬆地測試UserController中與ScalaTest和的Mockito(假請求和模擬xxxService)
我的問題是我怎麼能嘲笑AuthAction和使用ScalaTest和Mockito測試UserController?
感謝
你問什麼樣的價值,在測試中注入'UserController'? –
不,我在問我如何測試我的控制器,以及如何模擬注入的值? – ttt