У меня есть метод signout
, который вызывает метод discard
другого класса. Я хочу проверить, что когда вызывается signout
, то discard
вызывается один раз. Я пытаюсь spy
на AuthenticatorService
, а затем проверить, что его discard
метод был вызван, но я получаю ошибку
Wanted but not invoked:
fakeJWTAuthenticatorService.discard(
<any>,
<any>,
<any>
);
Метод проверки
def signOutUser = silhouette.SecuredAction.async { implicit request =>
silhouette.env.authenticatorService.discard(request.authenticator, Ok(Json.toJson(JsonResultSuccess(messagesApi("success.signoutSuccessful")(langs.availables(0)))))) //I want to test that `discard` is called once
}
Тестовый пример, который я написал, -
"signOutUser" should {
"should be called when signout request is received" in {
val testEnv = new TestEnv(components = components)
val request = FakeRequest("POST", "ws/users/user-signout").withAuthenticator(testEnv.loginInfo)(testEnv.fakeEnv)
//spying calls the real method.
val authenticatorServiceSpy = Mockito.spy(testEnv.fakeSilhouette.env.authenticatorService)
val response = testEnv.controller.signOutUser(request)
val responseBody = contentAsJson(response)
println(s"response is ${responseBody}")
val result = (responseBody \ "result").get.as[String]
val message = (responseBody \ "additional-info").get.as[String]
result mustBe "success"
verify(authenticatorServiceSpy,times(1)).discard(ArgumentMatchers.any[JWTAuthenticator],ArgumentMatchers.any())(ArgumentMatchers.any())
}
}