scala - 为不带参数的 spark scala 函数编写单元测试?
问题描述
我正在编写 scala 函数的单元测试,其中我将模拟的 spark 数据帧传递给函数,然后使用assertSmallDataFrameEquality(actualDF, expectedDF)
函数来检查我的函数是否正确转换。
最近我遇到了一个不带参数并返回 Column 类型的函数。现在因为它不期待任何争论。我应该如何为这个函数编写测试用例。我的功能如下。
def arriveDateMinusRuleDays: Column = {
expr(s"date_sub(${Columns.ARRIVE_DATE},${Columns.RULE_DAYS})")
}
测试蓝图写在下面
test("arrive date minus rule days") {
import spark.implicits._
val today = Date.valueOf(LocalDate.now)
val inputDF = Seq(
(Y, today, 0, 80852),
(S, today, 1, 18851))
.toDF(FLAG, ARRIVE_DT, RULE_DAYS,ITEM_NBR)
val actualOutput = DataAggJob.arriveDateMinusRuleDays() // How to pass my column values to this function
// val exepectedoutput
assertmethod(actualoutput, expectedoutput)
// print(actualOutput)
}
解决方案
您不需要测试每个单独的功能。单元测试的目的是断言实现和下游消费者之间的契约,而不是实现细节。
如果您的作业在给定输入的情况下返回预期的输出,那么无论该特定功能在做什么,它都可以正常工作。它真的应该保密以避免混淆,
推荐阅读
- c++ - 当我输入输入时,给定的输入程序没有运行 sstream 是否有错误
- c - 为什么这个 C 代码会引发分段错误?
- angular - 在 FormArray 上使用内置的 Angular 验证器
- python - Spyder 中的“内核死机,正在重新启动”ipython 控制台
- ruby-on-rails - 使用来自私有 bitbucket 存储库的 gem
- javascript - 如何使用先前构建的数组来构建新对象
- docker - 打开()“/usr/share/nginx/html/Ip/Up”失败
- javascript - 只允许具有特定字符的特定模式正则表达式 - javascript
- java - Dagger 的 2 个活动的单个实例
- sql-server - 如何在 SQL Server 中使用 MAX() 编写查询以从 3 个不同的表中获取多行