小编nad*_*ads的帖子

如何模拟 Scala 类中使用的 KafkaProducer

我想为 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)
}
Run Code Online (Sandbox Code Playgroud)

我想在单元测试中做的是模拟生产者并检查是否已调用send()命令,如果是,则生产者记录是否符合预期。我自己未能成功找到解决方案。谷歌搜索解决方案也没有结果。如果有人知道如何解决该问题,我将不胜感激。

unit-testing scala mocking mockito scalatest

5
推荐指数
1
解决办法
2130
查看次数

标签 统计

mocking ×1

mockito ×1

scala ×1

scalatest ×1

unit-testing ×1