您可以在MockK中mock一个vararg方法:
interface ClsWithManyMany {
fun manyMany(vararg x: Any): Int
}
val obj = mockk<ClsWithManyMany>()
every { obj.manyMany(*anyVararg()) } returns 2
println(obj.manyMany("testing", "testing")) // 2如何捕获传递给该方法的值?这不起作用(捕获mutableListOf<Array<Any>>()也不起作用):
val captured = slot<Array<Any>>()
every { obj.manyMany(*capture(captured)) } answers {
println ("arguments: ${captured.captured}")
2
}发布于 2021-09-07 09:19:51
您可以执行以下操作:
val captured = mutableListOf<Any?>()
every { obj.manyMany(*varargAllNullable { captured.add(it) }) } answers {
println ("arguments: $captured")
captured.clear()
2
}This issue是开放的,允许以一种不那么繁琐的方式来实现这一点。
https://stackoverflow.com/questions/69085391
复制相似问题