Mockito выдает ошибку с Kotlin при проверке с помощью сопоставителей аргументов или захватчиков - PullRequest
0 голосов
/ 21 января 2020

При использовании Mockito с Kotlin, если я пытаюсь проверить ложные вызовы, он работает нормально, как (это в тесте Spring):

 @MockBean
 lateinit var fragmentProcessor: FragmentProcessor

 verify(fragmentProcessor, timeout(20000)).processFragment(expectedFragment)

, что дает ожидаемое поведение ... но просто сделать что-то вроде:

 verify(fragmentProcessor, timeout(20000)).processFragment(Mockito.eq(expectedFragment))

выдаст следующую ошибку:

Missing method call for verify(mock) here:
-> at uk.co.argos.productapi.services.kafka.KafkaConsumerServiceTest.testFragmentProcessorReceivesMessages(KafkaConsumerServiceTest.kt:47)

Example of correct verification:
    verify(mock).doSomething()

Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
Mocking methods declared on non-public parent classes is not supported.

то же самое происходит с ArgumentCaptor или другими сопоставителями

1 Ответ

0 голосов
/ 21 января 2020

Вы уверены, что вы вызываете fragmentProcessor.processFragment(expectedFragment) где-то в своем коде до того, как verify истечет время ожидания?

В сообщении об ошибке говорится, что вы этого не делаете, поэтому verify выдает исключение (как и должно быть) ).

В этой строке:

verify(fragmentProcessor, timeout(20000)).processFragment(expectedFragment)

Вы не используете verify правильно (вы должны использовать Mockito.eq): он ничего не проверяет, поэтому не бросить, но это не значит, что это работает, как вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...