В моем искровом приложении есть метод, который загружает данные из базы данных 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
или другой способ лучше, чем издевательство, чтобы протестировать этот метод?
SparkSession.builder().getOrCreate()
- person TobiSH   schedule 26.03.2018session.read.jdbc(s"(${input.selectQuery}) T0", input.jdbcUrl ..
.. Я согласен, что тестировать этот код не очень важно. ... но, тем не менее, в его тестировании действительно есть какая-то ценность .. - person rogue-one   schedule 27.03.2018