我已经为我的SpringBootKafka(消费者/生产者)服务编写了集成测试,一切都很顺利。因此,我在一些处理之后手动提交消费者的偏移量。我想核实一下 acknowledgment.acknowledge()
被消费者叫来。是否可以验证?
这是我的服务方法签名:
@KafkaListener(topics = {TOPIC_XXX_V1}, containerFactory = "XXXListener")
private void consumer(@Payload XXXXRequestEvent xxxxRequestEvent, Acknowledgment acknowledgment) {
.....
// do something with the database
acknowledgment.acknowledge()
对于我正在使用的测试端 @SpyBean
为服务和 MockBean
用于数据库交互。我想验证一下在测试用例中 .acknowledge()
被叫来了。仅供参考:the .acknowledge()
是一个公共抽象空方法
1条答案
按热度按时间yvfmudvl1#
作为
Acknowledge
示例是作为springkafka的一部分被注入和创建的,在使用消息时,我想没有办法使用verify()
为了这个。在编写单元测试时,您可以通过
Acknowledge
然后验证是否调用了此方法。但是,使用单元测试,您无法测试消息的实际使用情况(序列化、正确的消息处理程序等)。因此,在您的情况下,我将尝试验证您的消息是否得到了确认,例如使用testcontainers在kafka容器内执行命令,并确保不再返回已确认的消息。
另一种方法是创建一个kafka客户机作为测试的一部分,然后尝试在x秒内使用来自同一主题的消息,结果为零。等待也许对你有帮助。