gpt4 book ai didi

java - Mockito 调用 Object 的 equals() 方法

转载 作者:行者123 更新时间:2023-11-28 21:31:57 25 4
gpt4 key购买 nike

我是 Mockito 的新手。我有

Map<String, Object> expectedFilter = new HashMap<String, Object>()
expectedFilter.put("ids", new Integer[]{22});
expectedFilter.put("codes", new Integer[]{1});

并使用此映射作为参数编写 stub 。为什么 mockito 调用 Object 的 equals,而 map 中值的真实类型是 Integer?

谢谢!

最佳答案

您将 Integer[] 放入 map ,而不是 Integers。 Integer[] 不会覆盖 Objects equals,所以它会被调用。为了解决这个问题,您可以编写一个包装器类,像这样对数组的内容调用 equals:

public class ArrayWrapper<E> {
private E[] data;

public ArrayWrapper(E[] data) {
this.data = Arrays.copyOf(data, data.length);
}

@Override public boolean equals(Object other) {
if (this == other) return true;
if (!(other instanceof ArrayWrapper)) return false;
ArrayWrapper o = (ArrayWrapper)other;
if (this.data.size != o.data.size) return false;
for (int i = 0; i < this.data.size; i++)
if (!this.data[i].equals(o.data[i]) return false;
return true;
}
}

并将此类的实例而不是 Integer[] 的实例添加到映射中,因此将调用此类 equals。

关于java - Mockito 调用 Object 的 equals() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244333/

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