我有一个像
class A{
public String mymethod(){
//Some processing here
}
}
class B extends A{
public void mySomeMethod(){
String myToken = super.myMethod();
//processing
}
}
现在我想模拟这里提到的调用String myToken = super.myMethod();
并在测试类中返回常量String。
我试着做
Mockito.doReturn("gdgwdgweg23et287").when((A)bSpy).myMethod();
但这没有帮助,因为该方法仍在被调用。
任何人都可以在这里建议一种方法
最佳答案
真正的方法仍被调用的原因是,间谍只是被监视对象的包装。一旦方法调用位于该包装器边界之内,则不涉及包装器(spy)。更重要的是,您不能对被监视对象调用自身的方法进行存根。这是因为该调用已经在包装器(spy)边界内。
如果在间谍上调用myMethod
,则将获得存根版本。但是,如果您在间谍上调用mySomeMethod
,则此处没有存根,因此它将调用传递到B
实例,该实例实际上是this.myMethod
进行调用。