我有像
这样的结构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();
但是这个方法仍然有用,但这并没有帮助。 任何人都可以在这里建议一种方法
答案 0 :(得分:2)
仍在调用真实方法的原因是间谍只是一个围绕间谍对象的包装器。一旦方法调用在包装器边界内,就不会涉及包装器(spy)。更重要的是,你不能存储间谍对象自己调用的方法。这是因为调用已经在包装器(间谍)边界内。
如果您在间谍上致电myMethod
,您将获得存根版本。但是如果您在间谍上调用mySomeMethod
,则此处没有存根,因此它将调用传递到实际调用B
的{{1}}实例。
答案 1 :(得分:0)
首先你不需要将B的实例强制转换为A,无论如何都不会在这里投射 然后我的第二个问题是 - 你如何创建bSpy对象?