#kotlin #mockk #mockk-verify
Вопрос:
Я хочу убедиться, что несколько функций были вызваны в определенном порядке, но одна из функций вызывается N раз:
verifyOrder {
myMockObject.func1()
(exactly = 10) myMockObject.func2()
myMockObject.func3()
}
Как мне указать «точно = 10» выше?
Ответ №1:
Это невозможно. Вашим лучшим вариантом было verifySequence
бы , чтобы проверить, что звонки происходили в указанной последовательности.
verifySequence {
myMockObject.func1()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func2()
myMockObject.func3()
}
Это некрасиво, но, насколько мне известно, у вас нет лучшей альтернативы.
Комментарии:
1. Спасибо. И для будущих читателей, которым интересно, в чем разница между verifyOrder и verifySequence, я только что исследовал это, и я думаю, что verifyOrder позволяет другим вызовам происходить между проверяемыми, в то время как verifySequence этого не делает.
2. Точно.
verifySequence
является точным совпадением, в то времяverifyOrder
как просто проверяет, что эти вызовы соответствуют заданному порядку, но другие вызовы могут быть опущеныverifyOrder
. Хорошая мысль @k314159 😉3. Спасибо за подтверждение. Официальные документы немного расплывчаты в этом различии.