Что не так с этим модульным тестом?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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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