Что не так с этим модульным тестом?Android

Форум для тех, кто программирует под Android
Anonymous
Что не так с этим модульным тестом?

Сообщение Anonymous »

@OptIn(ExperimentalCoroutinesApi::class)
@Test
fun `view model test`() = runTest {
val employees = EmployeeResponse(listOf())
`when`(employeeRepo.getEmployees()).thenReturn(employees)

`when`(employeeMapper.mapToState(anyList())).thenReturn(emptyList())

val testDispatcher = StandardTestDispatcher(testScheduler)
Dispatchers.setMain(testDispatcher)

viewModel = EmployeeViewModel(employeeRepo, employeeMapper)
viewModel.getEmployees()
advanceUntilIdle()

Assert.assertTrue(viewModel.uiState.value is EmployeeViewModel.EmployeeState.Success)

verify(employeeRepo, times(1)).getEmployees()

Dispatchers.resetMain()
}

Утверждение не выполнено, поскольку оператор утверждения выполняется до выполнения _uiState. Как это исправить?
Просмотр кода модели ниже
fun getEmployees() {
val errorHandler = CoroutineExceptionHandler { _, error ->
handleError(error)
}
viewModelScope.launch(errorHandler) {
val employees = withContext(Dispatchers.IO) {
employeeRepo.getEmployees()
}
_uiState.value = EmployeeState.Success(employeeMapper.mapToState(employees.employees))
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -unit-test

Вернуться в «Android»