以下是我正在尝试进行单元测试的代码。在第一个挂起函数之前的代码
以下是我的单元测试,我使用mockito来模拟我的监听器并检查交互次数。
但是最后两个
async(CommonPool)
是可测试的,但在此之后,测试始终失败。我尝试使用runBlocking
,但无法测试嵌套挂起的异步函数。interface Listener {
fun onLoading(user: User?)
fun onSuccess(user: User)
}
execute(listener: Listener) {
listener.onLoading(null)
val service = UserService.getInstance(context, "someurl")
val database = UserDatabase.getInstance(context)
launch(UI) {
val user = async(CommonPool) {
userDatabase.getUser()
}.await()
listener.onLoading(user)
val response = service.getUsersSelf(oauthToken).await()
async(CommonPool) {database.saveUser(userResponse.data.user)}.await()
val user = async(CommonPool) {database.getUser()}.await()
listener.onSuccess(user)
}
}
以下是我的单元测试,我使用mockito来模拟我的监听器并检查交互次数。
@Test
fun execute() {
runBlocking {
userDatabase.saveUser(user)
val listener = mock(GetUser.Listener::class.java)
getUser.execute(listener)
verify(listener, times(1)).onLoading(null) // Success
verify(listener, times(1)).onLoading(user) // Fails
verify(listener, times(1)).onSuccess(user) // Fails
}
}
但是最后两个
verify
测试失败了。有谁能帮我进行测试吗?