В чем разница между `verifySequence` и`verifyOrder` в 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
}
1 ответ
Решение
Метод verifySequence
проверяет, что произошли только указанные вызовы, и это должно быть в том же порядке. метод verifyOrder
с другой стороны, также работает, если вы пропустите некоторые вызовы, как вы уже сделали в примере (obj.sum(1, 3)
). Следующее не удастся, потому что вы не можете пропустить вызов с verifySequence
:
verifySequence {
obj.sum(1, 2)
obj.sum(2, 2)
}