如何在Kotlin中使用Mockito模拟Lambda

fin*_*usl 4 mockito kotlin

我有一个Kotlin Android应用程序。有一个函数可以从后端加载合成并将其返回给回调:

getCompositons(callback: (Array<Composition>) -> Unit)
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用嘲笑模拟回调。这样我就可以执行以下操作:

var callback = //mockito mock
getCompositons(callback) 
verify(callback, timeout(10000)).apply()
Run Code Online (Sandbox Code Playgroud)

我读到lambda与Java类型的函数匹配,因此我认为apply可能是调用的方法。也许我可以模拟一个函数并使用它?但是Kotlin函数接口似乎只有一种返回类型,没有参数。java.util.Function说未解决的参考函数。

任何帮助表示赞赏。

Oli*_*rth 5

这实际上与模拟其他任何类型没有什么不同:

val callback = mock<(Array<Composition>) -> Unit>()

getCompositons(callback)

verify(callback)(any())  // Or verify(callback).invoke(any()) to be explicit
Run Code Online (Sandbox Code Playgroud)

(以防您不了解它们,我在这里使用了模仿-kotlin绑定。)