我用的是Mockito 1.9.0.我想在JUnit测试中模拟类的单个方法的行为,所以

final MyClass myClassSpy = Mockito.spy(myInstance);
Mockito.when(myClassSpy.method1()).thenReturn(myResults);

问题是,在第二行中,myClassSpy.method1()实际上被调用,导致异常.我使用mock的唯一原因是,以后每当调用myClassSpy.method1()时,都不会调用真正的方法,并返回myResults对象.

MyClass是一个接口,myInstance是它的一个实现,如果这很重要的话.

我需要做些什么来纠正这种间谍行为?

推荐答案

让我引用the official documentation句话:

重要的是,我掌握了监视真实物体的方法!

有时不可能使用When(对象)来扼杀间谍.示例:

List list = new LinkedList();
List spy = spy(list);

// Impossible: real method is called so spy.get(0) throws IndexOutOfBoundsException (the list is yet empty)
when(spy.get(0)).thenReturn("foo");

// You have to use doReturn() for stubbing
doReturn("foo").when(spy).get(0);

在您的 case 中,大概是这样的:

doReturn(resultsIWant).when(myClassSpy).method1();

Java相关问答推荐

表格栏上的事件过滤器在PFA中不起作用

Android视图覆盖不阻止点击它后面的控件

空手道比赛条件

如何转换Tue Feb 27 2024 16:35:30 GMT +0800 String至ZonedDateTime类型""

尽管类型擦除,instanceof与泛型在Java中如何工作?

路径映射未发生

如何以干净的方式访问深度嵌套的对象S属性?

通过合并Akka Streams中的多个慢源保持订购

扩展到弹出窗口宽度的JavaFX文本字段

我找不到&Quot;配置&的位置

GSON期间的Java类型擦除

无法使用ApacheSpark依赖项构建JavaFX应用程序

Java页面筛选器问题

根本不显示JavaFX阿拉伯字母

如何从HttpResponse实例获取Entity对象的内容?

try 使用预准备语句占位符获取信息时出现Try-With-Resources错误

JOLT根据值删除并保留其余的json键

如何在SWT菜单项文本中保留@字符

Java Flux中的延迟增加

在ECLIPSE上的M1 Pro上运行JavaFX的问题