我正在使用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方法。
声明一个受保护的方法或公开解决此问题,这不是一个干净的解决方案。
添加回答
举报
0/150
提交
取消