从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 { ... }部分

希望这可以帮助。

10-04 10:32