10

在 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
}
4

1 回答 1

10

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

verifySequence {
    obj.sum(1, 2)
    obj.sum(2, 2)
}
于 2018-10-31T09:21:40.513 回答