是否可以在 Kotlin 中使用 Mockito?

2022-08-31 11:07:42

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

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

模拟方法:

public open fun login(userCredentials: UserCredentials): Response

答案 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 { ... }
}

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


答案 2

对于那些需要打字的人any(type: Class<T>)

    private fun <T> any(type: Class<T>): T = Mockito.any<T>(type)

这将起作用,类型检查也会发生!


推荐