издеваться над классом не работает, как ожидалось - PullRequest
0 голосов
/ 02 апреля 2019

В функции я создаю экземпляр CredentialsProvider и вызываю его метод authenticate.

val credentialsProvider = new CredentialsProvider(authInfoRepository, passwordHasherRegistory)
              val loginInfoFuture: Future[LoginInfo] = credentialsProvider.authenticate(credentials) 

В моем модульном тесте я создаю макет CredentialsProvider.

val mockCredentialsProvider = mock(classOf[CredentialsProvider])

и в моем тестовом примере я высмеиваю значение, когда вызывается authenticate.

when(testEnv.mockCredentialsProvider.authenticate(ArgumentMatchers.any[Credentials])).thenReturn(
        Future{
          println(s"mocked credentials provider will return ${testEnv.loginInfo}")
          testEnv.loginInfo}
      )

Когда я запускаю свой тестовый случай, он вылетает.Глядя на трассировку стека, кажется, что фактическая реализация authenticate вызывается вместо простого возврата значения.

at com.mohiva.play.silhouette.persistence.repositories.DelegableAuthInfoRepository.find(DelegableAuthInfoRepository.scala:51)
    at com.mohiva.play.silhouette.impl.providers.PasswordProvider.authenticate(PasswordProvider.scala:73)
    at com.mohiva.play.silhouette.impl.providers.PasswordProvider.authenticate$(PasswordProvider.scala:72)
    at com.mohiva.play.silhouette.impl.providers.CredentialsProvider.authenticate(CredentialsProvider.scala:46)
    at com.mohiva.play.silhouette.impl.providers.CredentialsProvider.$anonfun$authenticate$1(CredentialsProvider.scala:66)

Почему мой смоделированный код не работает?

...