所以我有这个调用 printResult() 方法的 main() 方法,并且 printResult() 在第二个参数上有一个 lambda 参数,如下所示:
class SomeClass() {
fun main(value: Int) {
printResult(value){ it ->
it + it
}
}
fun printResult(value: Int, sum: (Int) -> Int) {
val result = sum(value)
println(result)
}
}
然后在单元测试中,我想验证每次调用 main() 方法时,也应该调用 printResult()。所以我这样写单元测试:
@Test
fun testMain_shouldInvokePrintResult() {
someClass.main(10)
verify(someClass).printResult(10){ any() }
}
我不知道应该为 printResult() 方法传递什么参数,这就是我使用 any() 的原因。但是当我运行测试时,编译器说:
Argument(s) are different! Wanted:
someClass.main(
10,
() (kotlin.Exception /* = java.lang.Exception */) -> kotlin.Unit
);
-> at com.mydomain.test.testMain_shouldInvokePrintResult(SomeClassTest.kt:49)
Actual invocations have different arguments:
someClass.main(
10,
() (kotlin.Exception /* = java.lang.Exception */) -> kotlin.Unit
);
-> at com.mydomain.SomeClass.printResult$lambda-27(SomeClass.kt:20)
所以编译器基本上说了不同的论点,但在两次调用上都没有显示出不同。我应该怎么办?任何帮助,将不胜感激..