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