如何在mock对象中调用另一个方法

时间:2013-01-21 13:39:20

标签: junit mocking mockito

我的对象Panel里面是Methods

protected Confirmation confim() {
    Confirmation confirmation = new Confirmation() {
        @Override
        public void onConfirm() {
            doCancel();
        }
    };

    return confirmation;        
}

protected void doCancel() {
    ....
}

我需要检查确认()调用doCancel方法

我的测试

@Test
public void test() {
    Panel panel = Mockito.mock(Panel.class);

    Mockito.doCallRealMethod().when(panel).confirm();
    Mockito.doCallRealMethod().when(panel).cancel();

    panel.confirm();

    Mockito.verify(panel).cancel();
}`

问题在于cancel()永远不会被调用...也许是因为OnConfirm()是一个被覆盖的方法而且它需要一个模拟...或者其他东西......有人可以帮助如何测试?

P.S。小组必须是模拟的。

问题是o不要调用panel.confirm()。onConfirm(); 这是个愚蠢的错误.. 所以请删除这个问题..

1 个答案:

答案 0 :(得分:3)

 @Test
public void test() {
    Panel panel = Mockito.mock(Panel.class);

    Mockito.doCallRealMethod().when(panel).confirm();
    Mockito.doCallRealMethod().when(panel).cancel();

        panel.confirm().onConfirm();

    Mockito.verify(panel).cancel();
}`