Mockito 验证适用于模拟,但不适用于间谍

问题描述 投票:0回答:1

我对mockito#spy 有疑问,它不起作用。 我把问题归结为:

var list = (ArrayList<String>) Mockito.mock(ArrayList.class);
var spyList = Mockito.spy(list);

list.add("test");
Mockito.verify(spyList).add("test");

但是,如果我在模拟本身上验证,它确实有效:

var list = (ArrayList<String>) Mockito.mock(ArrayList.class);
//var spyList = Mockito.spy(list);

list.add("test");
Mockito.verify(list).add("test");

我当然想在真实的对象上使用间谍,但为了找到我的问题,我现在使用模拟。

我正在使用 Junit 5.7.1 和 Mockito 3.3.3。恐怕这些都是一成不变的。

有什么建议可能是什么问题吗?

java mockito spy
1个回答
0
投票

你的测试是错误的; 您正在尝试使用 Mock 对象(名为列表)作为 Spy 对象(名为间谍列表)。

试试这个:

spyList.add("test");
Mockito.verify(spyList).add("test");
© www.soinside.com 2019 - 2024. All rights reserved.