我面临的问题是Matchers.anyObject()返回null。当用于模拟只接受非空类型的方法时,它会引发“不应该为空”异常。
`when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -> someResponse }模拟方法:
public open fun login(userCredentials: UserCredentials): Response发布于 2015-05-18 16:16:38
有两种可能的解决办法:
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 { ... }
}下面是关于这个主题的更多讨论,首先提出解决办法。
发布于 2018-02-15 10:38:06
对于那些需要输入any(type: Class<T>)的人
private fun <T> any(type: Class<T>): T = Mockito.any<T>(type)这将有效,类型检查也会发生!
发布于 2018-01-04 08:48:54
您可以在Kotlin中使用以下助手函数来使用Mockito的any()、eq()和capture() matchers:
/**
* Returns Mockito.eq() as nullable type to avoid java.lang.IllegalStateException when
* null is returned.
*
* Generic T is nullable because implicitly bounded by Any?.
*/
fun <T> eq(obj: T): T = Mockito.eq<T>(obj)
/**
* Returns Mockito.any() as nullable type to avoid java.lang.IllegalStateException when
* null is returned.
*/
fun <T> any(): T = Mockito.any<T>()
/**
* Returns ArgumentCaptor.capture() as nullable type to avoid java.lang.IllegalStateException
* when null is returned.
*/
fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.capture()请参阅蓝图存储库中的MockitoKotlinHelpers.kt。
https://stackoverflow.com/questions/30305217
复制相似问题