【问题标题】: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));
    }
    

    【讨论】: