我有一个受身份验证特性保护的控制器。特征看起来像这样:
def isAuthenticated(f: => AccountDTO => Request[AnyContent] => Result) =
Security.Authenticated(username, onUnauthorized) { user =>
Action.async {
request => {
Future.successful(f(user)(request))
}
}
}
在执行正常请求时一切正常,但在进行单元测试时遇到问题。 我创建了以下虚假请求:
val goodRequest = FakeRequest("POST", "/platform/api/v1/files")
.withBody(Json.toJson(ScalaMockingUtil.fileValidMetadataJson))
.withHeaders((HeaderNames.AUTHORIZATION, "4322tertf2643t34t34"))
接下来,我获取我的控制器对象并通过应用FakeRequest调用该方法:
val result: Iteratee[Array[Byte], Result] = filesController.createFileMetadata()(goodRequest)
我面临的问题是FakeReuqest沿线的某个地方被下载到RequestHeader。问题似乎是这里描述的问题:Unable to test controller using Action.async其中Action有两个apply方法而不是一个。但是,我似乎无法强迫我需要的那个。
感谢任何帮助。
答案 0 :(得分:0)
解决方案(或解决方法)是使用call()而不是apply():
val result = call(filesController.createFileMetadata(), goodRequest)
现在一切正常。