我对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。恐怕这些都是一成不变的。
有什么建议可能是什么问题吗?
你的测试是错误的; 您正在尝试使用 Mock 对象(名为列表)作为 Spy 对象(名为间谍列表)。
试试这个:
spyList.add("test");
Mockito.verify(spyList).add("test");