Проверьте точное количество вызовов в пределах verifyOrder

#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. Спасибо за подтверждение. Официальные документы немного расплывчаты в этом различии.