首页 > Java > java教程 > 如何在 Mockito 中有效模拟 Void 方法?

如何在 Mockito 中有效模拟 Void 方法?

DDD
发布: 2024-12-07 10:59:11
原创
526 人浏览过

How to Effectively Mock Void Methods in Mockito?

使用 Mockito 模拟 Void 方法

在观察者模式中,观察者通常定义具有 void 返回类型的方法。当尝试使用 Mockito 模拟此类方法时,您可能会遇到挑战。

挑战: 不会自动触发没有返回值的方法的模拟。因此,与状态更改或方法调用相关的断言可能在单元测试中失败。

解决方案:

利用 doThrow()doAnswer(), Mockito 中的 doNothing()doReturn() 方法来操作 void 方法的行为。

例如,在调用方法时触发异常:

Mockito.doThrow(new Exception()).when(instance).methodName();
登录后复制

要将其与后续操作结合起来:

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();
登录后复制

中在提供的示例中,可以使用 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());
登录后复制

使用此技术,您可以模拟 void 方法、设置期望并执行断言以验证它们在单元测试中的行为。

以上是如何在 Mockito 中有效模拟 Void 方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

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