gpt4 book ai didi

unit-testing - Kotlin 匿名函数参数单元测试

转载 作者:行者123 更新时间:2023-12-04 04:14:21 26 4
gpt4 key购买 nike

根据 Kotlin Unit Testing for Function Parameter and Object ,我们可以测试函数变量funcParam ,因为它是一个对象函数变量。

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

class MyClass1(val myObject: MyObject, val myObject2: MyObject2) {
fun myFunctionOne() {
myObject.functionWithFuncParam{
num: Int ->
// Do something to be tested
myObject2.println(num)
}
}
}

class MyObject () {
fun functionWithFuncParam(funcParam: (Int) -> Unit) {
funcParam(32)
}
}

如何编写测试这部分代码的单元测试?
            num: Int ->
// Do something to be tested
myObject2.println(num)

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

最佳答案

一段时间后发现测试它的方法是使用 Argument 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)
}

更多信息请引用 https://medium.com/@elye.project/how-to-unit-test-kotlins-private-function-variable-893d8a16b73f#.1f3v5mkql

关于unit-testing - Kotlin 匿名函数参数单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com