我的 spark 应用程序中有一个从 MySQL 数据库加载数据的方法。该方法看起来像这样。
trait DataManager {
val session: SparkSession
def loadFromDatabase(input: Input): DataFrame = {
session.read.jdbc(input.jdbcUrl, s"(${input.selectQuery}) T0",
input.columnName, 0L, input.maxId, input.parallelism, input.connectionProperties)
}
}
jdbc
该方法除了执行方法并从数据库加载数据之外什么都不做。我该如何测试这种方法?标准方法是创建一个对象的模拟,session
它是SparkSession
. 但由于SparkSession
有一个私有构造函数,我无法使用 ScalaMock 模拟它。
这里的主要问题是我的函数是一个纯粹的副作用函数(副作用是从关系数据库中提取数据),鉴于我有模拟问题,我如何对这个函数进行单元测试SparkSession
。
那么有什么方法可以模拟SparkSession
或比模拟测试这种方法更好的方法吗?