Весной я пытаюсь провести модульное тестирование потребительского класса кафки. Я хочу знать, что если сообщение kafka отправлено в его тему, метод прослушивателя был вызван правильно. Мой потребительский класс аннотирован следующим образом:
@KafkaListener(topics = "${kafka.topics.myTopic}")
public void myKafkaMessageEvent(final String message) { ...
Если я @Autowire потребитель, когда я отправляю сообщение kafka, метод прослушивателя вызывается правильно, но я не могу утверждать, что метод был вызван, потому что класс не является макетом.
Если я издеваюсь над потребителем, когда я отправляю сообщение kafka, метод слушателя вообще не вызывается. Я могу вызвать метод напрямую и утверждать, что он сработал, но это не делает то, что я хочу, то есть проверяю, вызывается ли метод, когда я отправляю сообщение kafka в его тему.
На данный момент я прибегнул к размещению счетчика внутри потребителя и увеличивал его каждый раз, когда вызывается метод прослушивателя, а затем проверял, изменилось ли его значение. Создание переменной только для тестирования кажется мне ужасным решением.
Может быть, есть способ заставить издевательского потребителя также получать сообщения kafka? Или какой-то другой способ утверждать, что был вызван метод прослушивателя не издевательского потребителя?