unit-testing - MockK 中的 `verifySequence` 和 `verifyOrder` 有什么区别?

标签 unit-testing kotlin mockk

在 MockK 库的指南中,这个例子没有为我清除这个。以下是文档中的示例:

class MockedClass {
    fun sum(a: Int, b: Int) = a + b
}

val obj = mockk<MockedClass>()
val slot = slot<Int>()

every {
    obj.sum(any(), capture(slot))
} answers {
    1 + firstArg<Int>() + slot.captured
}

obj.sum(1, 2) // returns 4
obj.sum(1, 3) // returns 5
obj.sum(2, 2) // returns 5

verifyAll {
    obj.sum(1, 3)
    obj.sum(1, 2)
    obj.sum(2, 2)
}

verifySequence {
    obj.sum(1, 2)
    obj.sum(1, 3)
    obj.sum(2, 2)
}

verifyOrder {
    obj.sum(1, 2)
    obj.sum(2, 2)
}

val obj2 = mockk<MockedClass>()
val obj3 = mockk<MockedClass>()
verify {
    listOf(obj2, obj3) wasNot Called
}

最佳答案

方法verifySequence检查是否只发生了指定的调用,并且必须以相同的顺序进行。方法verifyOrder另一方面,如果您像示例中那样省略了一些调用( obj.sum(1, 3) ),也可以使用。以下操作将失败,因为您不能忽略使用 verifySequence 的调用:

verifySequence {
    obj.sum(1, 2)
    obj.sum(2, 2)
}

关于unit-testing - MockK 中的 `verifySequence` 和 `verifyOrder` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53079523/

相关文章:

c# - 如何测试服务不可用和抛出的http错误

kotlin - mockk的allAny()是如何使用的

kotlin - io.mockk.MockKException : no answer found when mocking list of objects with ObjectMapper. readValue() 使用 mockk?

python - 使用 Google App Engine 进行本地 Django 单元测试的 stub

scala - 如何在 Scala 单元测试中创建临时目录

android - Firestore监听器一次又一次被调用

function - 在Kotlin中将异常用作默认参数

kotlin - Kotlin 中的 throw 语句

php - Symfony 2.6 覆盖 PHPUnit_Framework_Error