在Mockito中,存根默认值是指在模拟对象中为方法设置默认返回值。Mockito允许您为模拟对象中的方法设置默认返回值,这样当调用这些方法时,就不需要为每个方法单独设置返回值。这可以简化测试代码,并使其更具可读性。
Mockito提供了两种方法来存根默认值:
Mockito.mock()
方法创建模拟对象时,通过MockSettings
对象设置默认返回值。import org.mockito.Mockito;
import org.mockito.stubbing.Answer;
public class MockitoExample {
public interface MyService {
String getName();
int getAge();
}
public static void main(String[] args) {
MyService myService = Mockito.mock(MyService.class, Mockito.withSettings()
.defaultAnswer(Mockito.CALLS_REAL_METHODS)
.defaultAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
if (invocation.getMethod().getName().equals("getName")) {
return "defaultName";
} else if (invocation.getMethod().getName().equals("getAge")) {
return 0;
} else {
return null;
}
}
}));
System.out.println(myService.getName()); // 输出 "defaultName"
System.out.println(myService.getAge()); // 输出 0
}
}
Mockito.when()
方法为模拟对象中的方法设置默认返回值。import org.mockito.Mockito;
public class MockitoExample {
public interface MyService {
String getName();
int getAge();
}
public static void main(String[] args) {
MyService myService = Mockito.mock(MyService.class);
Mockito.when(myService.getName()).thenReturn("defaultName");
Mockito.when(myService.getAge()).thenReturn(0);
System.out.println(myService.getName()); // 输出 "defaultName"
System.out.println(myService.getAge()); // 输出 0
}
}
在这两种方法中,第一种方法允许您为模拟对象中的所有方法设置默认返回值,而第二种方法则允许您为每个方法单独设置默认返回值。
推荐的腾讯云相关产品:
产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云