我有一个看起来像这样的代码:
MyObject getMyObject() {
Instant now = Instant.now();
return myService.doSomething(now);
}
我知道JUnit 5不支持PowerMock,但我想知道也许至少对于标准API(例如日期)有解决方案。
现在我正在用Instant
嘲笑Mockito.any()
实例,因为它通过了错误的Instant
不会失败,所以测试不会失败。
答案 0 :(得分:4)
您可以将当前Instant的创建移至包级方法:
MyObject getMyObject() {
Instant now = getCurrentInstance();
return myService.doSomething(now);
}
Instant getCurrentInstant(){
Instant.now();
}
然后在测试中,您可以监视SUT并模拟getCurrentInstant
方法:
Sut sut = spy(new Sut());
doReturn(testInstance).when(sut).getCurrentInstant();
sut.getMyObject();