我正在使用Mockito 1.9.0。我希望在JUnit测试中模拟类的单个方法的行为,因此
最终MyClass myClassSpy=Mockito.spy(myInstance);
Mockito.when(myClassSpy.method1())。然后返回(myResults);
问题是,在第二行中,myClassSpy.method1()实际上被调用,导致异常。我使用mock的唯一原因是,以后无论何时调用myClassSpy.method1(),都不会调用真正的方法,并且会返回myResults对象
MyClass是一个接口,myInstance是该接口的一个实现,如果这很重要的话
我需要做什么来纠正这种间谍行为
让我引用官方文件:
重要的是,我已经掌握了监视真实物体的方法
有时,当(对象)用于刺杀间谍时,是不可能的。例如:
List List=newlinkedlist(); 列表间谍=间谍(列表); //不可能:real方法被调用,因此spy.get(0)抛出IndexOutOfBoundsException(列表仍然为空) 当(spy.get(0))。然后返回(“foo”); //必须使用doReturn()进行存根 doReturn(“foo”).when(spy.get(0);
在您的情况下,它是这样的:
doReturn(resultsIWant).when(myClassSpy.method1();