【发布时间】:2019-02-21 15:51:39
【问题描述】:
谁能帮我弄清楚如何有效地对下面的代码进行单元测试。它的 kotlin 但可以是任何东西:
myMainObject.doSomethingSpecial({ differentObject ->
differentObject.doFirst()
differentObject.doSecond()
differentObject.doThird()
})
我想测试 doSomethingSpecial 是否真的有效。
我想过尝试模拟 lambda:
val function1: () -> Int = mock()
whenever(function1.invoke())
.thenReturn(1)
但这不是我真正想要的。我想测试 lamda 中的所有方法都被调用,所以我想测试 doFirst、doSecond、doThird 等都被调用,我认为这是最好的单元测试方法。我是否为此使用参数捕获,如何?需要明确的是,我的问题是如何对方法 doSomethingSpecial 进行单元测试?
【问题讨论】:
-
所以,你会测试 lambda 而不是
doSomethingSpecial,不是吗?可能您可以将 fake lambda 传递给doSomethingSpecial方法并测试它在您调用doSomethingSpecial...时是否被调用... -
有趣的想法。所以如果我想在之后测试 lamaba,我将如何测试它是否调用了所有这些方法?
标签: unit-testing lambda junit kotlin