В чем разница между `verifySequence` и` verifyOrder` в MockK? - PullRequest
0 голосов
/ 31 октября 2018

В руководстве по библиотеке 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 Ответ

0 голосов
/ 31 октября 2018

Метод verifySequence проверяет, что произошли только указанные вызовы, и это должно быть в том же порядке. С другой стороны, метод verifyOrder также работает, если вы пропустите некоторые вызовы, как вы уже сделали в примере (obj.sum(1, 3)). Следующее не удастся, потому что вы не можете пропустить вызов с verifySequence:

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