【发布时间】:2019-10-04 13:48:32
【问题描述】:
您好,我有这段使用协程的代码,我想对其进行单元测试:
我的问题是我的异常从未被CoroutineExceptionHandler 捕获。
我的代码如下所示:
fun request() {
val handler = CoroutineExceptionHandler { _, throwable -> liveData.value = Resource.error(throwable.message) }
viewModelScope.launch(handler) {
liveData.value = Resource.loading()
val result = withContext(Dispatchers.IO) { useCase.request() }
liveFdDetails.value = Resource.success(result)
}
}
还有我的测试:
fun testError() = runBlocking {
//Given
val observer: Observer<Resource<Data>> = mock()
whenever(useCase.request()).thenThrow(Error("MSG"))
viewModel.liveData.observeForever(observer)
//When
viewModel.request()
//Then
inOrder(observer).apply {
verify(observer).onChanged(Resource.loading())
verify(observer).onChanged(Resource.error("MSG"))
}
}
【问题讨论】:
标签: android unit-testing kotlin coroutine kotlin-coroutines