인증 특성을 사용하는 스칼라로 작성된 컨트롤러가 있습니다. 형질이 IsAuthenticated는 방법을 아래와 같이 가지고FakeApplication에 본문이 없습니다.
def createFileMetadata() = isAuthenticated { user => implicit request =>
{
....
}
: 컨트롤러의
def isAuthenticated(f: => AccountDTO => Request[AnyContent] => Result) =
Security.Authenticated(username, onUnauthorized) { user =>
Action.async {
request => {
Future.successful(f(user)(request))
}
}
}
내 방법은 사용자가 인증 여부 전에 실제 작업을 수행하는 경우 확인 형질 방법을 사용 Postman 또는 UI에서 POST 요청을하는 것은 의도 한대로 모두 작동하지만, 단위 테스트를 할 때 심각한 문제에 직면하고 있습니다. 내 컨트롤러에서 나는 request.body.asJson
를 사용하는 경우
val goodRequest = FakeRequest(POST, url).withJsonBody([a JsObject]).withHeaders((HeaderNames.AUTHORIZATION, "someMockToken"))
는 지금, 나는 None
을 얻을 다음과 같이
단위 테스트입니다. 또한 (HeaderNames.CONTENT_TYPE, "application/json")
을 가지고 있다면 제어기 메소드를 입력하지 않고도 400 (잘못된 요청)이 발생합니다.
또한 withJsonBody()
대신 withBody()
을 사용했지만 동일한 결과가 나타났습니다. 절망적으로 나는 심지어 자바 구현 RequestBuidler()
을 사용하여 요청을 만들려고했지만 정확한 결과는 똑같습니다.
다시 말해 앱이 실행 중일 때 요청하면 작동하지만 단위 테스트에만 문제가 있습니다. 디버그를 사용하여 이상한 것을 보았는데 이것이 문제가 될 수 있습니다. 아래 이미지에서 볼 수 있듯이 단위 테스트를 실행할 때 요청의 'body'는 비어 있지만 rh $ 1의 본문이 존재하며 설정 한대로입니다. Postman에서 응용 프로그램으로 요청할 때 보낸 '값'이있는 '본문'이 있습니다.