gpt4 book ai didi

java - 如何使用 Mockito 捕获中间值?

转载 作者:行者123 更新时间:2023-11-30 04:20:54 26 4
gpt4 key购买 nike

问题很简单...

// Class Under Test
list.add(1);
dependency.handleList(list);
list.clear();
list.add(2);
dependency.handleList(list);

//Test Code
verify(mockDepenency, times(2)).handleList(argumentCaptor.capture());
List<Collection<Integer>> list = argumentCaptor.getAllValues();
assertEquals(1, list.get(0).get(0)); // fails value is 2

原因似乎与 Mockito 捕获参数的方式有关。也就是说,它通过引用捕获所有参数。这似乎与this issue有关.

理想情况下,我希望能够在捕获时指定副本/克隆,但我看不到有办法做到这一点。我缺少其他选择吗?

最佳答案

如果您向被测类提供 list ,您也许也可以模拟它并对其执行验证,例如:

final List<Integer> list = spy(List.class);

... act...

final InOrder inOrder = inOrder(list, mockDependency);

inOrder.verify(list).add(1);
inOrder.verify(mockDependency).handleList(list);
inOrder.verify(list).clear();
inOrder.verify(mockDependency).handleList(list);
inOrder.verify(list).add(2);

但是,我不确定这种方法是否适合您的实际测试。

编辑:根据鲸鱼的评论从mock更改为spy

关于java - 如何使用 Mockito 捕获中间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com