在调用模拟对象的方法时执行某些操作

时间:2014-03-24 20:16:51

标签: java unit-testing mockito

我正在以模型 - 视图 - 演示者模式为演示者编写测试。我嘲笑了视图并测试了演示者。我想做的是在视图中调用模拟方法时执行一些代码。

详细说明,视图发送和"保存点击的事件"然后,演示者向演示者告诉视图,以保存表格中的变化。之后视图将UI组件的更改提交给模型。然后,演示者可以继续在模型中执行任何操作。由于视图现在被模拟,因此不会对模型进行任何修改。所以我想要完成的是当在模拟中调用saveChangeInTheForm时,我将模拟视图的行为并更改模型的内容。

这可以用Mockito完成吗?我现在拥有的是......

Mockito.doNothing().when(view).saveChangeInTheForm();

..理想情况下,我想替换" doNothing"与doMyCustomThing

2 个答案:

答案 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方法。