MockK:找不到答案,因为模拟是从外部修改的
MockK: no answer found because the mock is modified from outside
各位开发者大家好,
我有以下问题:
假设我有一个名为 UseCaseX 的 class:
class UseCaseX (private val repository: Repository) {
override suspend fun invoke(params: Unit?) = repository.call()
}
现在,此 UseCaseX 用于 class ViewModel,如下所示:
...
val result = async { useCaseX.invoke(null) }
...
然后我使用 MockK 在 ViewModelTest 中模拟 UseCaseX,如下所示:
val useCaseX = mockk<UseCaseX>(relaxUnitFun = true)
我收到以下错误:
io.mockk.MockKException: no answer found for: UseCaseX(#7).invoke(null, continuation {})
at io.mockk.impl.stub.MockKStub.defaultAnswer(MockKStub.kt:90)
at io.mockk.impl.stub.MockKStub.answer(MockKStub.kt:42)
很明显,UseCaseX.invoke(params)
函数在 async{}
期间被扩展了一个附加参数,到目前为止还没有答案。
问题:在这种情况下,我如何为模拟提供答案?
使用 withContext(Dispatchers.Default)
而不是 async
。应该可以!
各位开发者大家好,
我有以下问题:
假设我有一个名为 UseCaseX 的 class:
class UseCaseX (private val repository: Repository) {
override suspend fun invoke(params: Unit?) = repository.call()
}
现在,此 UseCaseX 用于 class ViewModel,如下所示:
...
val result = async { useCaseX.invoke(null) }
...
然后我使用 MockK 在 ViewModelTest 中模拟 UseCaseX,如下所示:
val useCaseX = mockk<UseCaseX>(relaxUnitFun = true)
我收到以下错误:
io.mockk.MockKException: no answer found for: UseCaseX(#7).invoke(null, continuation {})
at io.mockk.impl.stub.MockKStub.defaultAnswer(MockKStub.kt:90)
at io.mockk.impl.stub.MockKStub.answer(MockKStub.kt:42)
很明显,UseCaseX.invoke(params)
函数在 async{}
期间被扩展了一个附加参数,到目前为止还没有答案。
问题:在这种情况下,我如何为模拟提供答案?
使用 withContext(Dispatchers.Default)
而不是 async
。应该可以!