【发布时间】:2018-10-17 06:18:59
【问题描述】:
我正在尝试在 Spring 中对 kafka 消费者类进行单元测试。我想知道,如果将 kafka 消息发送到其主题,则正确调用了侦听器方法。我的消费者类是这样注释的:
@KafkaListener(topics = "${kafka.topics.myTopic}")
public void myKafkaMessageEvent(final String message) { ...
如果我 @Autowire 消费者,当我发送 kafka 消息时,侦听器方法被正确调用,但我不能断言该方法已被调用,因为该类不是模拟。
如果我模拟消费者,当我发送 kafka 消息时,根本不会调用侦听器方法。我可以直接调用该方法,并断言它有效,但这并不能满足我的要求,即在我向其主题发送 kafka 消息时检查该方法是否被调用。
现在我已经在消费者内部放置了一个计数器,并在每次调用侦听器方法时递增它,然后检查它的值是否已更改。为测试创建一个变量对我来说似乎是一个糟糕的解决方案。
有没有办法让被嘲笑的消费者也收到卡夫卡消息?或者以其他方式断言调用了非模拟消费者侦听器方法?
【问题讨论】:
标签: spring unit-testing apache-kafka spring-kafka