Идея в том чтобы описать функцию, использующую DI для обработки входных данных. В итоге получим тестируемую функцию, которую можно переиспользовать
Пример:
public class GoodReadsUseCase @Inject public constructor(
private val repository: Repository,
private val manager: Manager,
private val clock: Clock
) {
public suspend operator fun invoke(params: Params): Boolean {
return someServerLogic
}
}
Ну а внутри
ViewModel это будет выглядеть как то так:
public class ViewModel @Inject constructor(
private val useCase: GoodReadsUseCase
) {
public suspend fun read(params: Params) {
val isBool = useCase(params)
}
}
Удобно и понятно на что писать тесты! Используем?