Для тестирования я использую JUnit 5 с kotest.
Мы используем архитектуру MVI, поэтому у нас есть только один объект State который также содержит состояние счетчика и данные.
Для тестирования я также установил основной поток:
Код: Выделить всё
Dispatchers.setMain(Dispatchers.Unconfined)
Код: Выделить всё
fun doHeavyTask(){
viewModelScope.launch(Dispatchers.IO) {
updateSpinnerState(true)
val result = ApiCall.getResult()
updateSpinnerState(false)
val finalResult = doSomething(result)
updateStateWithResult(finalResult)
}
}
Код: Выделить всё
@Test
fun testData() = runTest{
...
val result = state.drop(2).first()
result.data.size shouldBe data.size
}
Метод обновления
Код: Выделить всё
_state.update {
it.copy(
showSpinner= showSpinner
)
}
Как я могу решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/782 ... -unit-test