我认为这可以工作:
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();
}
因此,如果您没有做其他任何错误,您的代码应该可以正常工作。您正在使用哪个Mockito版本?
关于java - 在顺序很重要的情况下,在Mockito中验证同一方法的两次调用,并在两次调用之间进行验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21042131/