【发布时间】:2017-09-14 12:18:54
【问题描述】:
我有一个 Scala 对象,它包含一些实用函数。这些函数由同一对象中存在的其他函数或其他类/对象调用。是否可以模拟这个对象或函数,以便我可以对调用它们的类进行单元测试。
例子:
object Util {
def methodA() = {
//other code
methodB()
//other code
}
def methodB() = {
//other code
methodC()
//other code
}
def methodC() = { ... }
}
这里我从另一个类调用对象函数
class Data {
//other code
def call() = {
//other code
Util.methodA()
//other code
}
}
如何对 Data 类的函数 call() 进行单元测试?在 Java 中,我可以为 Util 创建一个模拟对象并设置对 methodA() 调用的期望,但这在 Scala 中是不可能的,因为没有模拟库支持模拟 Scala 对象。
【问题讨论】:
-
有很多 scala 模拟选项。例如,请参阅scalatest.org/user_guide/testing_with_mock_objects。任何快速搜索都会为您带来很多选择
-
是的,我已经看到了您提供的链接,但其中提到的模拟框架都不支持模拟 Scala 对象。 ScalaMock 2 支持模拟对象,但在 ScalaMock 3 中已停止使用,这是 Scala 2.11 编译器的最新版本。
标签: scala unit-testing mocking