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