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 为空。
在我下面的简单示例中,我想知道如何仅在使用 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 为空。