使用 ScalaTest,我想替换测试用例中的函数实现。我的用例:
object Module {
private def currentYear() = DateTime.now().year.get
def doSomething(): Unit = {
val year = currentYear()
// do something with the year
}
}
我想编写一个单元测试 testing Module.doSomething
,但我不希望这个测试用例依赖于测试运行的实际年份。
在动态语言中,我经常使用可以替换函数实现以返回固定值的构造。
我希望我的测试用例将实现更改Module.currentYear
为始终返回 2014,无论实际年份是什么。
我发现了几个模拟库(Mockito、ScalaMock、...),但它们都只能创建新的模拟对象。它们似乎都无法替代方法的实现。
有没有办法做到这一点?如果不是,我如何在不依赖于测试运行年份的情况下测试这样的代码?