Mockito可以用来匹配Kotlin中的函数参数吗?

时间:2018-07-16 23:11:11

标签: kotlin mockito

我有一个函数,其原型类似于:

class objectToMock {

    fun myFunc(stringArg: String, booleanArg: Boolean = false, functionArg: (String) -> Any = { 0 }): String

}

我希望能够存根myFunc,但不知道该怎么做。像

@Mock
lateinit var mockedObject: ObjectToMock

@Before
fun setup() {
    MockitoAnnotations.initMocks(this)
    `when`(mockedObject.myFunc(anyString(), anyBoolean(), any())).thenReturn("")
}

同时使用any()notNull()会导致java.lang.IllegalStateException: any() must not be null

3 个答案:

答案 0 :(得分:1)

当调用诸如nullany()等方法时,Mockito经常返回eq()。将这些实例传递给未正确模拟的方法可能导致NullPointerExceptions

请参阅:https://github.com/nhaarman/mockito-kotlin/wiki/Parameter-specified-as-non-null-is-null

答案 1 :(得分:0)

您可以添加

mockedObject = ObjectToMock()

@Before是初始化的地方。 @Test这是进行测试的地方。您可以调用mockedObject.myFunc()

答案 2 :(得分:0)

这里的解决方案是使用https://github.com/nhaarman/mockito-kotlin中的anyOrNull,或自己实现该帮助程序。