【发布时间】:2021-10-17 06:39:06
【问题描述】:
我正在尝试在 Scala 中模拟 Kafka Consumer。但是,我收到了NullPointerException。
以下是我的模拟代码:
val kafkaConsumerMock: KafkaConsumer[String, Any] = mock[KafkaConsumer[String, Any]]
我得到的错误是:
java.lang.NullPointerException
at java.util.HashMap.putMapEntries(HashMap.java:501)
at java.util.HashMap.<init>(HashMap.java:490)
at org.apache.kafka.clients.consumer.ConsumerConfig.addDeserializerToConfig(ConsumerConfig.java:523)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:629)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:610)
当我尝试调试时,我看到有多个构造函数,每个构造函数最后都调用一个私有构造函数。此后,私有构造函数执行一些检查,并抛出一个 NPE,因为我传递给 KafkaConsumer 的配置是 null(但模拟不应该需要传递参数,对吧?)。
我无法理解的是,为什么在我尝试模拟时会调用实际代码?另外,我该如何解决这个问题?
编辑:我正在使用MockFactory
附上调试状态。 mock 返回一个 null 消费者。
【问题讨论】:
-
我们需要整个代码来帮助您,但很确定有些代码没有使用您创建的模拟。
-
另外你使用的是哪个模拟库?
-
@GaëlJ,我在初始化 mockConsumer 时创建了一个断点。这本身就是失败点。测试甚至还没有开始。
标签: scala apache-kafka mocking