Mockito return 仅在第二次调用方法时的值

Mockito return value only when method is called for second time

在我下面的简单示例中,我想知道如何仅在使用 Mockito 第二次调用 nameManager.getName() 之后才能将 nameManager 变为 return 的名称? (我知道我还能做其他事情,比如嘲笑 saveName() 所做的事情)

我考虑过使用doAnswer(),但我不知道如何确定nameManager.getName()何时被调用了两次。

public void saveName(String name) {
  boolean doesNameExist = nameManager.getName(name).isPresent();
  if (!doesNameExist) {
    saveName(name);
    if (!nameManager.getName(name).isPresent()) {
      throw new Exception("Cannot verify name has been saved");
    }
  }
}

在您的单元测试中,您只需添加两次 then 子句即可。像这样-

@Test
public void yourUnitTest(){
    when(nameManager.getName(anyString())
        .thenReturn(null)
        .thenReturn(someValue);
    // your test
}

第二次调用时只有 return 值,第一次调用时 return 为空。