Unit testing Kotlin匿名函数参数单元测试

Unit testing Kotlin匿名函数参数单元测试,unit-testing,mockito,kotlin,Unit Testing,Mockito,Kotlin,根据,我们可以测试函数变量funcParam,因为它是一个目标函数变量 但是,如果代码是使用匿名/内联函数参数编写的(这是一个非常好的Kotlin特性,它允许我们消除不必要的临时变量) 如何编写测试这部分代码的单元测试 num: Int -> // Do something to be tested myObject2.println(num) 或者函数参数的内联(如上所述)不利于单元测试,因此应该避免?过一会儿,发

根据,我们可以测试函数变量
funcParam
,因为它是一个目标函数变量

但是,如果代码是使用匿名/内联函数参数编写的(这是一个非常好的Kotlin特性,它允许我们消除不必要的临时变量)

如何编写测试这部分代码的单元测试

            num: Int ->
            // Do something to be tested
            myObject2.println(num)

或者函数参数的内联(如上所述)不利于单元测试,因此应该避免?

过一会儿,发现测试它的方法是使用参数Captor

@Test
fun myTest() {
    val myClass1 = MyClass1(mockMyObject, mockMyObject2)
    val argCaptor = argumentCaptor<(Int) -> Unit>()
    val num = 1  //Any number to test

    myClass1.myFunctionOne()
    verify(mockMyObject).functionWithFuncParam(argCaptor.capture())
    argCaptor.value.invoke(num)

    // after that you could verify the content in the anonymous function call
    verify(mockMyObject2).println(num)
}
@测试
乐趣我的测试(){
val myClass1=myClass1(mockMyObject,mockMyObject2)
val argCaptor=argumentCaptor单元>()
val num=1//任何要测试的数字
myClass1.myFunctionOne()
验证(mockMyObject).functionWithFuncParam(argCaptor.capture())
argCaptor.value.invoke(num)
//之后,您可以验证匿名函数调用中的内容
验证(MockMyObject 2).println(num)
}
有关更多信息,请参阅

@Test
fun myTest() {
    val myClass1 = MyClass1(mockMyObject, mockMyObject2)
    val argCaptor = argumentCaptor<(Int) -> Unit>()
    val num = 1  //Any number to test

    myClass1.myFunctionOne()
    verify(mockMyObject).functionWithFuncParam(argCaptor.capture())
    argCaptor.value.invoke(num)

    // after that you could verify the content in the anonymous function call
    verify(mockMyObject2).println(num)
}