我需要模拟一个ZonedDateTime.ofInstant()
方法。我知道在SO中有很多建议,但对于我的具体问题,到目前为止我还没有得到任何简单的解决方法。
下面是我的代码:
public ZonedDateTime myMethodToTest(){
MyClass myClass;
myClass = fetchSomethingFromDB();
try{
final ZoneId systemDefault = ZoneId.systemDefault();
return ZonedDateTime.ofInstant(myClass.getEndDt().toInstant(), systemDefault);
} catch(DateTimeException dte) {
return null;
}
}
下面是我的不完整测试方法:
@Mock
MyClass mockMyClass;
@Test(expected = DateTimeException.class)
public void testmyMethodToTest_Exception() {
String error = "Error while parsing the effective end date";
doThrow(new DateTimeException(error)).when(--need to mock here---);
ZonedDateTime dateTime = mockMyClass.myMethodTotest();
}
我想模拟ZonedDateTime.ofInstant()
方法,在解析负面场景时抛出DateTimeException。我如何做到这一点。
2条答案
按热度按时间4dc9hkyq1#
从现在起(18/03/2022)Mockito支持模拟静态方法。
请注意,你需要使用
mockito-inline
依赖关系:bmp9r5qi2#
您不能使用
Mockito
来实现这一点,因为ZonedDateTime
是一个final类,而ofInstant
是一个 static 方法,但是您可以使用PowerMock
库来增强Mockito
的功能: