例如,有一个类 A,它有两个方法 methodUnderTest() 和 display(),其中 methodUnderTest 调用 display 方法。使用mockito编写junit时如何模拟display()方法?
class A{
public int method methodUnderTest{
//some code
display();
}
public int display(){
//some code
}
}
最佳答案
如果这是你的类(class):
public static class A{
public int methodUnderTest() {
return display();
}
public int display(){
return 1;
}
}
然后使用mockito,你可以这样做:
A a = spy(new A());
when(a.display()).thenReturn(0);
System.out.println(a.methodUnderTest()); // will print 0
说明:
当你mock()
一个类时,没有底层实例,除非另有指定,否则你调用的所有方法都不会执行任何操作并返回默认值。
当您spy()
某个实例时,所有调用都会被记录,并转发到实际实例。这意味着除非您模拟特定的调用,否则您的类行为将保持完全相同。
话虽如此,像你这样的情况通常是你需要拆分类(class)的症状,并在 separating your concerns 上投入一些。 .
关于java - 如何模拟正在测试同一类的另一个方法中调用的类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56784899/