首页 > Java > java教程 > 如何在 Mockito 中模拟 Void 方法:doThrow、doAnswer、doNothing 和 doReturn 指南?

如何在 Mockito 中模拟 Void 方法:doThrow、doAnswer、doNothing 和 doReturn 指南?

Susan Sarandon
发布: 2024-12-17 03:06:26
原创
428 人浏览过

How to Mock Void Methods in Mockito:  A Guide to doThrow, doAnswer, doNothing, and doReturn?

使用 Mockito 模拟 Void 方法

在处理观察者模式时,具有 void 返回类型的模拟方法可能会带来挑战。一个这样的情况是在使用像 addListener 这样的方法模拟类时遇到困难,该方法返回 void。

为了模拟没有返回值的方法,Mockito 提供了一组方法:doThrow()、doAnswer()、 doNothing() 和 doReturn()。这些方法允许您指定模拟方法的行为。

例如,要指定 addListener 方法在调用时抛出异常,您可以使用:

Mockito.doThrow(new Exception()).when(instance).addListener(any(Listener.class));
登录后复制

或者,您可以将多种行为链接在一起。例如,以下代码在第一次调用 addListener 时抛出异常,然后在后续调用中不执行任何操作:

Mockito.doThrow(new Exception()).doNothing().when(instance).addListener(any(Listener.class));
登录后复制

在提供的 World 类中,您可以使用 doAnswer 方法模拟 setState 方法,如下所示如下图:

World mockWorld = mock(World.class);
doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        System.out.println("called with arguments: " + Arrays.toString(args));
        return null;
    }
}).when(mockWorld).setState(anyString());
登录后复制

以上是如何在 Mockito 中模拟 Void 方法:doThrow、doAnswer、doNothing 和 doReturn 指南?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板