Kotlin 如何验证是否对参数具有lambda表达式的模拟对象调用函数
假设我有一个名为Kotlin 如何验证是否对参数具有lambda表达式的模拟对象调用函数,kotlin,junit,mockito,Kotlin,Junit,Mockito,假设我有一个名为 fun doSomething() { customObject.callThis(10, 20) } customObject是类customObject的对象,它使用Mockito进行模拟。下面是为上述代码编写的单元测试 @Test fun doSomething() { // Call the doSomething() function verify(customObject).callThis(10, 20) } 这很好用。现在,当我们编写
fun doSomething() {
customObject.callThis(10, 20)
}
customObject是类customObject
的对象,它使用Mockito进行模拟。下面是为上述代码编写的单元测试
@Test
fun doSomething() {
// Call the doSomething() function
verify(customObject).callThis(10, 20)
}
这很好用。现在,当我们编写doSomething
函数如下时,我产生了怀疑
fun doSomething() {
customObject.callThis(10, { navigation.finish() })
}
其中导航是类导航的模拟对象。现在,如何测试上述函数?如果您使用的是mockito kotlin,您可以执行以下操作:
import com.nhaarman.mockitokotlin2.inOrder
import com.nhaarman.mockitokotlin2.eq
import com.nhaarman.mockitokotlin2.any
inOrder {
verify(customObject).callThis(eq(10), any())
verify(navigation).finish()
}
我将验证是否对传入的对象调用了
finish()
方法。如果API上有订购保证,可以使用一个索引。@BoristheSpider您能详细介绍一下解决方案吗。我不明白你的意思。我也不知道InOrder的意思。我认为eq(值)对我来说是一个很好的学习方法。