如何在 Mockito 中模拟方法参数



我有一个想要测试的方法。此方法可能会引发异常。

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

希望对您有所帮助!

相关内容

  • 没有找到相关文章

最新更新