Я пишу модульные тесты, и у меня есть особый случай, когда я изменяю наблюдаемое значение перед выполнением функции приостановки, а затем сразу после. Я хотел бы написать модульный тест, чтобы проверить, правильно ли менялось значение дважды.
Вот метод:
fun doSomething() {
viewModelScope.launch(ioDispatcher) {
try {
viewModelScope.launch(Dispatchers.Main) {
commandLiveData.value = Pair(CANCEL_TIMER, null)
}
isProgress.set(true) //need to test it was set to true in one test
checkoutInteractor.doSomethingElse().run {
handleResult(this)
}
isProgress.set(false) //need to test it was set to false here in another test
} catch (ex: java.lang.Exception) {
handleHttpError(ex)
isProgress.set(false)
}
}
}
При написании теста я звоню doSomething()
, но Я не уверен, как определить, что значение было установлено в true перед checkoutInteractor.doSomethingElse
Позвоните и установите значение false после.
Вот мой тест
@Test
fun `test doSomething enables progress`() {
runBlockingTest {
doReturn(Response()).`when`(checkoutInteractor). checkoutInteractor.doSomethingElse()
viewModel.doSomething()
assertTrue(viewModel.isProgress.get()) //fails obviously as the value was already set to false after the `doSomethingElse` was executed.
}
}
Кстати, isProgress
- это ObservableBoolean