【发布时间】:2021-11-26 08:03:55
【问题描述】:
我想从 Java 中模拟 Files.copy()、LocalDate.now() 等函数,例如 在我的一个功能中,我有
public int functionForTest(){
var now = LocalDate.now()
if(now.getMonth() == 2)
return 55;
if(now.getMonth() == 4)
return 22;
}
根据当前月份,我必须返回一些值,但是当我想测试这个函数时,我必须模拟 LocalDate.now()。有人知道如何模拟这个函数吗?
【问题讨论】:
-
您对源代码有控制权吗?重构它以获得更好的可测试性会更容易(参见例如this answer)。
-
那么创建返回当前日期的提供者类会更好吗?如果我不能更改代码怎么办?
-
对于这种特定情况,您不必编写类,因为已经有
Clock。请参阅我的链接答案。如果您无法更改代码,我猜您很不走运。