我想知道有什么可能运行作为参数传递给模拟函数的 lambda 函数。并在调用模拟方法时运行它。
我正在使用 Mockk,我想代码是这样的:
class DataManager {
fun submit(lambda: (Int) => Unit) { ... }
}
...
val mock = mockk<DataManager>()
every { mock.submit(lambda = any()) }.run { lambda(5) }
在我的实际实现中,datamanager 调用服务器并在收到成功响应时将 lambda 作为回调运行。 lambda 恰好是被测类的私有(private)方法。
最佳答案
您需要使用 Capture 而不是 Any。
val dataManager: DataManager = mockk()
every { dataManager.submit(captureLambda()) } answers { lambda<(Int) -> Unit>().invoke(5) }
dataManager.submit { i -> println(i) }
此外,您的函数类型的声明无效。
你有
(Int) => Unit
什么时候应该是(Int) -> Unit
.
关于android - 如何运行传递给模拟方法的 lambda 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61108797/