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