我希望为一个Scala类编写单元测试。这个类的目的是收集指标并将它们发布到Kafka主题上。我正在尝试在单元测试中模拟生产者,以确保代码的健全性。以下是该类的简化版本:
class MyEmitter(sparkConf: SparkConf) {
<snip> -- member variables
private val kafkaProducer = createProducer()
def createProducer(): Producer[String, MyMetricClass] = {
val props = new Properties()
...
Code to initialize properties
...
new KafkaProducer[String, MyMetricClass](props)
}
def initEmitter(metricName: String): SomeClass = {
// Some implementation
}
def collect(key: String, value: String): Unit = {
// Some implementation
}
def emit(): Unit = {
val record = new ProducerRecord("<topic name>", "<key>", "<value>")
kafkaProducer.send(record)
}
我在单元测试中想要模拟生产者并检查是否调用了send()方法,若有,则检查生产者记录是否符合预期。但我自己尝试解决问题未成功,Google搜索也没有结果。如果有人知道如何解决这个问题,我将不胜感激。