为了账号安全,请及时绑定邮箱和手机立即绑定

Mockito:试图窥探方法是在调用原始方法

Mockito:试图窥探方法是在调用原始方法

青春有我 2019-12-09 12:43:30
我正在使用Mockito 1.9.0。我想在JUnit测试中模拟类的单个方法的行为,所以我有final MyClass myClassSpy = Mockito.spy(myInstance);Mockito.when(myClassSpy.method1()).thenReturn(myResults);问题是,在第二行中,myClassSpy.method1()实际上是在被调用,从而导致异常。我使用模拟的唯一原因是,以便以后每次myClassSpy.method1()调用时,都不会调用real方法,并且myResults将返回对象。MyClass是一个接口,并且是该接口myInstance的实现(如果有关系的话)。我需要怎么做才能纠正这种间谍行为?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我的情况与接受的答案不同。我正在尝试为不存在于该程序包中的实例模拟程序包私有方法


package common;


public class Animal {

  void packageProtected();

}


package instances;


class Dog extends Animal { }

和测试班


package common;


public abstract class AnimalTest<T extends Animal> {

  @Before

  setup(){

    doNothing().when(getInstance()).packageProtected();

  }


  abstract T getInstance();

}


package instances;


class DogTest extends AnimalTest<Dog> {

  Dog getInstance(){

    return spy(new Dog());

  }


  @Test

  public void myTest(){}

}

编译是正确的,但是在尝试设置测试时,它将调用real方法。


声明一个受保护的方法或公开解决此问题,这不是一个干净的解决方案。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信