Я хочу протестировать наш метод, который отформатирован примерно так:
def extractTable( spark: SparkSession, /* unrelated other parameters */ ): DataFrame = {
// Code before that I want to test
val df = spark.read
.format("jdbc")
.option("url", "URL")
.option("driver", "<Driver>")
.option("fetchsize", "1000")
.option("dbtable", "select * from whatever")
.load()
// Code after that I want to test
}
И я пытаюсь сделать заглушки объекта spark, а объекты DataFrameReader - read
и option
методы возвращают:
val sparkStub = stub[ SparkSession ]
val dataFrameReaderStub = stub[ DataFrameReader ]
( dataFrameReaderStub.format _).when(*).returning( dataFrameReaderStub ) // Works
( dataFrameReaderStub.option _).when(*, *).returning( dataFrameReaderStub ) // Error
( dataFrameReaderStub.load _).when(*).returning( ??? ) // Return a dataframe // Error
( sparkStub.read _).when().returning( dataFrameReaderStub )
Но я получаю сообщение об ошибке dataFrameReaderStub.option
и dataFrameReaderStub.load
, в котором говорится «Не удается разрешить опцию символа» и «Не удается разрешить загрузку символа». Но эти методы определенно существуют для объекта, который spark.read
возвращает.
Как я могу устранить эту ошибку, или есть лучший способ смоделировать / протестировать мой код?