我正在以模型 - 视图 - 演示者模式为演示者编写测试。我嘲笑了视图并测试了演示者。我想做的是在视图中调用模拟方法时执行一些代码。
详细说明,视图发送和"保存点击的事件"然后,演示者向演示者告诉视图,以保存表格中的变化。之后视图将UI组件的更改提交给模型。然后,演示者可以继续在模型中执行任何操作。由于视图现在被模拟,因此不会对模型进行任何修改。所以我想要完成的是当在模拟中调用saveChangeInTheForm时,我将模拟视图的行为并更改模型的内容。
这可以用Mockito完成吗?我现在拥有的是......
Mockito.doNothing().when(view).saveChangeInTheForm();
..理想情况下,我想替换" doNothing"与doMyCustomThing
答案 0 :(得分:4)
这可以通过实施Answer
来完成。 E.g:
final Model model = ...;
Answer modelModifier = new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
model.setX(1);
model.setY(2);
model.activateZ();
return null;
};
Mockito.doAnswer(modelModifier).when(view).saveChangeInTheForm();
答案 1 :(得分:1)
好像你正在寻找Mockitos doAnswer方法。