3

从 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))

4

1 回答 1

1

您的例外说明了一切(以及直接答案之一),您始终必须指定模拟的行为..

在你的情况下:

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)
}

此时检查文档并查找every { ... }示例中的部分

希望这可以帮助。

于 2019-05-09T06:15:37.430 回答