gpt4 book ai didi

java - 如何模拟具有特定值的列表

转载 作者:行者123 更新时间:2023-11-30 09:49:56 25 4
gpt4 key购买 nike

我有一个方法:

expect(processor.process(arg1, list));
expectLastCall().anyTImes();

现在,我需要列表包含某些值。问题是必须以正确的顺序将值添加到列表中,否则列表将不等于真实列表。所以我不能只创建一个新列表并向其中添加值,因为如果方法 process 更改了向列表中添加值的顺序,测试将失败。我试过了

List list=createMock(List.class);
expect(list.add(value1)).andReturn(true);
expect(lst.add(value2)).andReturn(true);

但他给出了这个异常(exception):

java.lang.AssertionError: 
Unexpected method call process(arg, [Listvalue1,Listvalue2]):
process(arg, EasyMock for interface java.util.List): expected: 1, actual: 0

非常感谢。

最佳答案

您可以使用 IAnswerEasyMock.getCurrentArguments() 然后手动断言列表的内容

expect(processor.process(arg1, list));
expectLastCall().anyTimes().andAnswer(new IAnswer<Object>() {
public Object answer() throws Throwable {
List myList = (List) EasyMock.getCurrentArguments()[1];
// do your assertions on the list here (or change the order as required)
}
});

使用 EasyMock.getCurrentArguments() 的一大缺点是它不是“重构安全”的(如果更改参数的顺序,它将破坏测试)。

希望对您有所帮助。

关于java - 如何模拟具有特定值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5458831/

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