Я написал метод для фильтрации дубликатов из RDD и решил написать модульный тест для метода. Вот мой метод:
def filterDupes(salesWithDupes: RDD[((String, String), SalesData)]): RDD[((String, String), SalesData)] = {
salesWithDupes.map(salesWithDupes => ((salesWithDupes._2.saleType, salesWithDupes._2.saleDate), salesWithDupes))
.reduceByKey((a, _) => a)
.map(_._2)
}
Поскольку это мой первый опыт написания теста в Scala, я столкнулся с несколькими сложностями. Правильно ли я передаю элементы из списка в метод фильтрации?
Теперь я застрял с тем, как проверить результат, возвращаемый методом.
Единственный подход, который я предложил, - это сбор данных RDD в список и проверка их размера. Это правильный путь?
Вот как я вижу логику теста:
"Sales" should "be filtered" in {
Given("Sales RDD")
val rddWithDupes = sc.parallelize(Seq(
(("metric1", "metric2"), createSale("1", saleType = "Type1", saleDate = "2014-10-12")),
(("metric1", "metric2"), createSale("2", saleType = "Type1", saleDate = "2014-10-12")),
(("metric1", "metric2"), createSale("3", saleType = "Type3", saleDate = "2010-11-01"))
))
When("Sales RDD is filtered")
val filteredResult = SalesProcessor.filterDupes(rddWithDupes).collect.toList
Then("Sales are filtered")
filteredResult.size should be(2)
????
}