在 Mockito 中验证同一方法的两个调用与中间的另一个方法调用,当顺序很重要时



我认为这会起作用:

InOrder inOrder = new InOrder(mock);
inOrder.verify(mock).method1();
inOrder.verify(mock).method2();
inOrder.verify(mock).method1();

。但是Mockito说undesired invocation of mock.method1(). Wanted 1 time, but was 2 times.我把我的代码改成了这样:

inOrder.verify(times(2), mock).method1();
inOrder.verify(mock).method2();

它应该有效,但现在我不测试我首先想要测试的内容。有人可以指出我做错了什么,或者 Mockito 对于这种测试来说太有限了?

它用 Mockito 1.9.5 对此进行了测试,它的工作原理是:

@Test
public void foo() {
    Runnable outer = Mockito.mock(Runnable.class, "outer");
    Runnable inner = Mockito.mock(Runnable.class, "inner");
    outer.run();
    inner.run();
    outer.run();
    InOrder order = Mockito.inOrder(outer, inner);
    order.verify(outer).run();
    order.verify(inner).run();
    order.verify(outer).run();
}

因此,如果您没有做错任何其他事情,您的代码应该可以工作。你用的是什么莫克托版本?

相关内容

  • 没有找到相关文章

最新更新