一尘不染

可以在Kotlin中使用Mockito吗?

java

我面临的问题是Matchers.anyObject()回报null。当用于仅接受非空类型的模拟方法时,它将导致引发“应该不为空”异常。

`when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -> someResponse }

模拟方法:

public open fun login(userCredentials: UserCredentials): Response

阅读 231

收藏
2020-09-08

共1个答案

一尘不染

有两种可能的解决方法:

private fun <T> anyObject(): T {
    Mockito.anyObject<T>()
    return uninitialized()
}

private fun <T> uninitialized(): T = null as T

@Test
fun myTest() {
    `when`(mockedBackend).login(anyObject())).thenAnswer { ... }
}

另一个解决方法是

private fun <T> anyObject(): T {
    return Mockito.anyObject<T>()
}

@Test
fun myTest() {
    `when`(mockedBackend).login(anyObject())).thenAnswer { ... }
}

这是有关此主题的更多讨论,其中首先提出了解决方法。

2020-09-08