繁体   English   中英

如何在 kotlin 中使用 mockito 模拟 lambda

How to mock lambda with mockito in kotlin

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

如何使用 mockito 模拟回调。 这样我就可以做这样的事情:

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

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

任何帮助表示赞赏。

2 个回复

这与嘲笑任何其他类型确实没有什么不同:

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

getCompositons(callback)

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

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

你可以这样做:

val function: Array<Composition>) -> Unit = {}
val callback = mock(function::class.java)

getCompositons(callback)

verify(callback)(any()) // or for example verifyNoInteractions(callback)

除了标准的 mockito 之外不需要额外的库

4 Mockito - 如何请求模拟 Java Lambda 函数

我在测试类中有一个 java lambda 函数 但我现在想得到一个 Mock 对象来模拟上述 lambda 函数对象的行为 上面的代码可以编译,但显然类型是原始的(不是通用的)。 我似乎想不出任何方法(没有显式转换)我可以推断类型。 也许,这是典型的大脑冻结期之一:(。 有人可以指出我正 ...

7 如何在Kotlin中模拟和验证Lambda表达?

在Kotlin(和Java 8)中,我们可以使用Lambda表达式删除样板回调接口。 例如, 我们可以更改remove ProfileCallback并将其更改为Kotlin的Lambda: 这可以正常工作,但是我不确定如何模拟然后验证该功能。 我已经试过像这样使用Mockito 但是它 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM