如何在Kotlin中使用Mockito模拟Lambda

时间:2018-11-14 18:46:59

标签: kotlin mockito

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

getCompositons(callback: (Array<Composition>) -> Unit)

我该如何使用嘲笑模拟嘲笑回调。这样我就可以执行以下操作:

var callback = //mockito mock
getCompositons(callback) 
verify(callback, timeout(10000)).apply()

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

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:4)

这与模拟其他任何类型都没有什么不同

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

getCompositons(callback)

verify(callback)(any())  // Or verify(callback).invoke(any()) to be explicit

(如果您不知道它们,我在这里使用mockito-kotlin bindings。)

答案 1 :(得分:0)

您可以这样做:

var peopleEnum = ages.Where(a => a > 1)
        .Select(a => new Person
        {
            Name = a.ToString(),
            Age = a
        }).ToList();

除了标准的模型库之外,不需要其他库