有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java忽略Mockito中的方法调用

使用Mockito,是否可以忽略对mock的方法调用

例如,对于使用mock(MyRugger.class)创建的模拟rugger

class Pepe {

  public void runner() {     
    rugger.doIt(); 
    rugger.flushIt();
    rugger.boilIt();     
  } 
}

我只需要测试runner(),但避免使用方法flushIt()


共 (3) 个答案

  1. # 2 楼答案

    Mockito很好,除非你要求,否则不会验证电话。因此,如果你不想验证flush(),只需验证你关心的方法:

    verify(rugger).doIt();
    verify(rugger).boilIt();
    

    如果要验证未调用flush(),请使用:

    verify(rugger, never()).flush();
    
  2. # 3 楼答案

    要在Mockito中重置模拟,只需调用^{}。请注意上面链接中提到的非常真实的问题,以及JavaDoc for ^{}指出它可能代表糟糕的设计

    这通常应该避免,但有时你只是需要这样做。下面是一个如何使用它的例子,而不是一个关于何时使用它的好例子

    Object value = mock(Object.class);
    
    when(value.equals(null)).thenReturn(true);
    assertTrue(value.equals(null));
    verify(value).equals(null);
    
    reset(value);
    
    assertFalse(value.equals(null));
    verify(value).equals(null);