从Mockito到Mockk的以下转换存在问题。
所以我有这个
@Mock
private lateinit var loginLiveDataObserver: Observer<LoginResult>
val inOrder = inOrder(loginLiveDataObserver)
inOrder.verify(loginLiveDataObserver).onChanged(enableLoading)
inOrder.verify(loginLiveDataObserver).onChanged(loginResults)
inOrder.verify(loginLiveDataObserver).onChanged(disableLoading)
尝试把它变成这个
private val loginLiveDataObserver = mockk<Observer<LoginResult>>()
verifyOrder {
loginLiveDataObserver.onChanged(enableLoading)
loginLiveDataObserver.onChanged(loginResults)
loginLiveDataObserver.onChanged(disableLoading)
}
给我以下错误
io.mockk.MockKException:找不到以下问题的答案:Observer(#4).onChanged(Loading(value = true))
最佳答案
您的异常说明了一切(以及直接答案之一),您始终必须指定模拟的行为。
在您的情况下:
private val loginLiveDataObserver = mockk<Observer<LoginResult>>()
// Example answer you can use different here
every { loginLiveDataObserver.onChange(any()) } answers nothing
verifyOrder {
loginLiveDataObserver.onChanged(enableLoading)
loginLiveDataObserver.onChanged(loginResults)
loginLiveDataObserver.onChanged(disableLoading)
}
此时检查Documentation并在示例中查找
every { ... }
部分希望这可以帮助。