确保在mockito中不调用非模拟方法

时间:2012-01-24 07:07:41

标签: java unit-testing mockito

在以下示例中:

   Execution execution = mock(Execution.class);
   when(execution.getLastQty()).thenReturn(1000.0);
   when(execution.getLastPrice()).thenReturn(75.0);

   order.onFillReceived(execution);

   assertEquals(0, order.getLeavesQty(), 0);

执行还有许多其他不应该被调用的方法。在此测试中只应使用已经模拟的两种方法,并且应该调用它们。如果调用任何其他方法,则测试应该失败。

如果调用任何其他方法,如何告诉Mockito失败?

2 个答案:

答案 0 :(得分:8)

documentation明确涵盖了这一点。您要在致电verifyNoMoreInteractions后(根据文档)或

致电verify
verify(execution).getLastQty();
verify(execution).getLastPrice();
verifyNoMoreInteractions(execution);

或使用ignoreStubs

verifyNoMoreInteractions(ignoreStubs(execution));

答案 1 :(得分:0)

如果符合用例,你可以尝试never方法:

即。

verify(execution, never()).someOtherMethod();