在一个函数中,我正在创建一个实例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)
为什么我的模拟代码不起作用?