如何在Mockito中模拟方法参数

时间:2015-01-20 13:19:17

标签: java unit-testing mocking mockito

我有一个我想要测试的方法。这种方法可以抛出异常。

mapper.mapToDTO(fragment.getDTO(), new ElementHandler());

我想测试一下Exception之后会发生什么。所以我做了一个Mocked测试:

when(mapper.mapToDTO(dto, Mockito.any(ElementHandler.class))).thenThrow(
            new MappingFailureException());

不幸的是,这种嘲弄并不好。我也知道Mockito.any部分不好。我的目标是调用MappingFailureException

如何映射类的类型的Object,如果给出任何类型的ElementHandler类作为参数,我的异常会被抛出?

2 个答案:

答案 0 :(得分:1)

试试这个

when(mapper.mapToDTO(Mockito.eq(dto), Mockito.any(ElementHandler.class))).thenThrow(
        new MappingFailureException());

答案 1 :(得分:1)

考虑使用mapper嘲笑......

Mapper mapper = mock(Mapper.class);

哟可以做这样的尝试(它应该与你的测试相同)

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();
    }
  });

希望它有所帮助!