我有一个想要测试的方法。此方法可能会引发异常。
mapper.mapToDTO(fragment.getDTO(), new ElementHandler());
我想测试一下,异常之后会发生什么。所以我做了一个模拟测试:
when(mapper.mapToDTO(dto, Mockito.any(ElementHandler.class))).thenThrow(
new MappingFailureException());
不幸的是,这种嘲弄并不好。我也知道Mockito.any部分不好。我的目标是调用MappingFailureException
如何映射类类型的对象,如果将任何类型的类作为参数给出ElementHandler
,将抛出我的异常?
试试这个
when(mapper.mapToDTO(Mockito.eq(dto), Mockito.any(ElementHandler.class))).thenThrow(
new MappingFailureException());
考虑到映射器被嘲笑...
Mapper mapper = mock(Mapper.class);
Yo可以做这样的事情来尝试(它应该与您的测试相同)
doThrow(new MappingFailureException()).when(mapper).mapToDTO(dto, Mockito.any(ElementHandler.class));
如果没有,您可以使用 mockito 构建自定义答案(在示例中,它返回一个字符串,但将其更改为 mapToDTO 的返回值)
when(mapper.mapToDTO(dto, Mockito.any(ElementHandler.class))).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
throw new MappingFailureException();
}
});
希望对您有所帮助!