模拟一个超级方法Mockito测试用例

时间:2014-12-01 06:48:43

标签: java junit mocking mockito superclass

我有像

这样的结构
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();

但是这个方法仍然有用,但这并没有帮助。 任何人都可以在这里建议一种方法

2 个答案:

答案 0 :(得分:2)

仍在调用真实方法的原因是间谍只是一个围绕间谍对象的包装器。一旦方法调用在包装器边界内,就不会涉及包装器(spy)。更重要的是,你不能存储间谍对象自己调用的方法。这是因为调用已经在包装器(间谍)边界内。

如果您在间谍上致电myMethod,您将获得存根版本。但是如果您在间谍上调用mySomeMethod,则此处没有存根,因此它将调用传递到实际调用B的{​​{1}}实例。

答案 1 :(得分:0)

首先你不需要将B的实例强制转换为A,无论如何都不会在这里投射 然后我的第二个问题是 - 你如何创建bSpy对象?