如何验证是否在参数具有 lambda 表达式的模拟对象上调用函数
How to verify whether a function is called on a mock object who parameter has a lambda expression
假设我有一个名为
的函数
fun doSomething() {
customObject.callThis(10, 20)
}
而 customObject 是 class CustomObject
的对象,它是使用 Mockito 模拟的。下面是为上面的代码编写的单元测试。
@Test
fun doSomething() {
// Call the doSomething() function
verify(customObject).callThis(10, 20)
}
这非常有效。现在,当我们编写如下 doSomething
函数时,我的疑问来了。
fun doSomething() {
customObject.callThis(10, { navigation.finish() })
}
其中导航是 class 导航的模拟对象。现在,如何测试上述功能?
如果您使用的是 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()
}
假设我有一个名为
的函数fun doSomething() {
customObject.callThis(10, 20)
}
而 customObject 是 class CustomObject
的对象,它是使用 Mockito 模拟的。下面是为上面的代码编写的单元测试。
@Test
fun doSomething() {
// Call the doSomething() function
verify(customObject).callThis(10, 20)
}
这非常有效。现在,当我们编写如下 doSomething
函数时,我的疑问来了。
fun doSomething() {
customObject.callThis(10, { navigation.finish() })
}
其中导航是 class 导航的模拟对象。现在,如何测试上述功能?
如果您使用的是 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()
}