我有一个类,我为它编写了单元测试。 类通过构造函数注入另外2个类。 然而,由于循环依赖关系问题,我不得不通过inject()注入其他依赖关系之一。
我的类看起来如下:
class AuthUseCase(
private val accessTokenUseCase: AccessTokenUseCase,
private val refreshTokenRepo: RefreshTokenRepo
) : KoinComponent {
val notificationService: NotificationService by inject()
fun getSyncedAccessToken(loginResult: LoginResult): Token? {
return when (loginResult) {
is LoginResult.Success -> {
accessTokenUseCase.storeRefreshToken(loginResult.accessToken)
notificationService.init()
loginResult.accessToken.accessToken
}
is LoginResult.Failure -> {
null
}
}
}
}
我想测试是否在测试中激发了NotificationService.Init。 通常情况下,这很简单
verify(notificationService).init()
然而,我不明白如何嘲弄这门课。 如有任何帮助,我们将不胜感激。
感谢@Mariuz并通过以下帖子:https://github.com/insertkoinio/koin/issues/197#issuecomment-429768448
诀窍是启动一个空的Koin容器。 并在测试中加载模拟模块。
@Test
fun testGetValidAccessTokenIfInvalidAccessTokenIsPassed() {
notificationService = mock()
startKoin { }
loadKoinModules(module {
single {
notificationService
}
})
verify(notificationService).init()
}