scala - 在 Scala 中模拟 Kafka 消费者
问题描述
我正在尝试在Scala
. 但是,我得到一个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
消费者。
解决方案
当您可以初始化一个模拟库时,您不应该使用模拟库MockConsumer
或者,如果您想将模拟注入另一个类,您还需要将其与org.apache.kafka.clients.consumer.Consumer
接口配对
推荐阅读
- android - 在某些地理位置无法按名称搜索应用程序
- javascript - Java脚本根据用户输入创建列和行
- firebase - 如何从 Firestore 获取数据作为 QuerySnaphot 与 streambuilder 作为 List 与模型?
- node.js - 跨域请求阻塞端口:80
- go - Golang 选择器 - 关于指针规范示例的问题
- c - 如何比较 C 中的字符输入的季节
- python - Python Mail Parser with Beautifulsoup - 努力解析整个收件箱
- php - 如何使用 Laravel 将带有 yes no 复选框的表设置为 mysql
- typescript - 包含用作接口键的 keyof 的模板文字
- java - 使用循环为java添加多个对象