我有一个像

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进行调用。

07-28 04:04
查看更多