我有一个使用当前时间进行一些计算的函数。我想用 mockito 来模拟它。
我想测试的类的一个例子:
public class ClassToTest {
public long getDoubleTime(){
return new Date().getTime()*2;
}
}
我想要这样的东西:
@Test
public void testDoubleTime(){
mockDateSomeHow(Date.class).when(getTime()).return(30);
assertEquals(60,new ClassToTest().getDoubleTime());
}
有可能嘲笑吗?我不想更改“已测试”代码以便进行测试。
原文由 Jordi P.S. 发布,翻译遵循 CC BY-SA 4.0 许可协议
正确的做法是重构您的代码,使其更易于测试,如下所示。重构您的代码以删除对 Date 的直接依赖将允许您为正常运行时和测试运行时注入不同的实现: