Generics Kotlin和mockito:在函数开头使用vararg时类型不匹配

Generics Kotlin和mockito:在函数开头使用vararg时类型不匹配,generics,kotlin,mockito,variadic-functions,Generics,Kotlin,Mockito,Variadic Functions,给定一个类,如下面的“目标”类: class Target { fun <R> target(vararg filter: String, mapper: (String) -> R): R { println(filter.contentDeepToString()) return mapper("target") } } 使用命名参数。在lambda之前添加mapper=,如下所示: @Test fun test() { val mockTar

给定一个类,如下面的“目标”类:

class Target {

fun <R> target(vararg filter: String, mapper: (String) -> R): R {
    println(filter.contentDeepToString())
    return mapper("target")
}

}

使用命名参数。在lambda之前添加
mapper=
,如下所示:

@Test
fun test() {
    val mockTarget = Mockito.mock(Target::class.java)
    Mockito.`when`(
        mockTarget.target<Int>(
            "Hello World",
            mapper = Mockito.any<(String) -> Int>()
        )
   ).thenReturn(1)
}
@测试
趣味测试(){
val mockTarget=Mockito.mock(Target::class.java)
莫基托,“什么时候`(
mockTarget.target(
“你好,世界”,
mapper=Mockito.any Int>()
)
)。然后返回(1)
}

惊人的答案!命名论点的简单性从未出现在我的脑海中!非常感谢你!
fun main(args: Array<String>) {
    val result = Target().target("Hello World") {
        123
    }
    println("$result == 123? ${result == 123}")
}
// out:
// [Hello World]
// 123 == 123? true
@Test
fun test() {
    val mockTarget = Mockito.mock(Target::class.java)
    Mockito.`when`(
        mockTarget.target<Int>(
            "Hello World",
            mapper = Mockito.any<(String) -> Int>()
        )
   ).thenReturn(1)
}