使用 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中文网其他相关文章!