您可以在 MockK 中模拟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
Run Code Online (Sandbox Code Playgroud)
如何捕获传递给该方法的值?这不起作用(捕获 a 也不起作用mutableListOf<Array<Any>>()):
val captured = slot<Array<Any>>()
every { obj.manyMany(*capture(captured)) } answers {
println ("arguments: ${captured.captured}")
2
}
Run Code Online (Sandbox Code Playgroud)
Cri*_*tan 11
您可以执行以下操作:
val captured = mutableListOf<Any?>()
every { obj.manyMany(*varargAllNullable { captured.add(it) }) } answers {
println ("arguments: $captured")
captured.clear()
2
}
Run Code Online (Sandbox Code Playgroud)
这个问题是开放的,以便以一种不那么麻烦的方式来做到这一点。
| 归档时间: |
|
| 查看次数: |
3351 次 |
| 最近记录: |