猿问

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

我正在使用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的实现(如果有关系的话)。


我需要怎么做才能纠正这种间谍行为?


青春有我
浏览 388回答 3
3回答

小怪兽爱吃肉

我的情况与接受的答案不同。我正在尝试为不存在于该程序包中的实例模拟程序包私有方法package common;public class Animal {&nbsp; void packageProtected();}package instances;class Dog extends Animal { }和测试班package common;public abstract class AnimalTest<T extends Animal> {&nbsp; @Before&nbsp; setup(){&nbsp; &nbsp; doNothing().when(getInstance()).packageProtected();&nbsp; }&nbsp; abstract T getInstance();}package instances;class DogTest extends AnimalTest<Dog> {&nbsp; Dog getInstance(){&nbsp; &nbsp; return spy(new Dog());&nbsp; }&nbsp; @Test&nbsp; public void myTest(){}}编译是正确的,但是在尝试设置测试时,它将调用real方法。声明一个受保护的方法或公开解决此问题,这不是一个干净的解决方案。
随时随地看视频慕课网APP

相关分类

Java
我要回答