如何模拟具有 void 返回类型的方法?
我实现了一个观察者模式,但我无法用 Mockito 模拟它,因为我不知道如何做。
我试图在互联网上找到一个例子,但没有成功。
我的班级是这样的:
public class World {
List<Listener> listeners;
void addListener(Listener item) {
listeners.add(item);
}
void doAction(Action goal,Object obj) {
setState("i received");
goal.doAction(obj);
setState("i finished");
}
private string state;
//setter getter state
}
public class WorldTest implements Listener {
@Test public void word{
World w= mock(World.class);
w.addListener(this);
...
...
}
}
interface Listener {
void doAction();
}
系统不是用mock触发的。
我想显示上述系统状态。并据此作出断言。
看看 MockitoAPI docs http://javadoc.io/page/org.mockito/mockito-core/latest/org/mockito/Mockito.html#12。正如链接文档提到的(第 12 点),您可以使用任何doThrow()
,doAnswer()
,doNothing()
,doReturn()
从 Mockito 框架到模拟 void 方法的一系列方法。
例如,
Mockito.doThrow(new Exception()).when(instance).methodName();
或者如果你想将其与后续行为结合起来,
Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();
假设您正在考虑嘲笑设置者setState(String s)
下面的 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());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)