【问题标题】:How to Mock Consumer Record?如何模拟消费者记录?
【发布时间】:2020-01-08 00:08:12
【问题描述】:
我需要一些帮助来为我的 Java kafka 消费者构建一个 Junit 测试用例。
我的原始源代码有如下方法,需要为此创建一个单元测试用例。
@KafkaListener(topics = "${kafka-receiver-topic}")
public void receiveTopic(ConsumerRecord<?, ?> consumerRecord) throws Exception {
JSONObject kafkaObject = new JSONObject(consumerRecord.value().toString());
}
【问题讨论】:
标签:
java
apache-kafka
mockito
junit5
【解决方案1】:
ConsumerRecord 有一个公共构造函数,所以你可以自己创建一个实例。
例如,稍微修改你的代码:
主要:
public JSONObject receiveTopic(ConsumerRecord<?, ?> consumerRecord) throws Exception {
JSONObject kafkaObject = new JSONObject(consumerRecord.value().toString());
return kafkaObject;
}
测试:
@Test
public void testReceiveTopic() {
ConsumerRecord<String, String> record = new ConsumerRecord<>("topic", 0, 123L, "key", "value");
JSONObject expected = <what you expected>
assertEquals(expected, receiveTopic(record));
}