我正在使用 Mockito 进行单元测试,我遇到了一个问题,我有一个散列集合,我想验证这些参数是否等效。
即我有类似的东西
Collection< byte[] > blobs = new ArrayList< byte[] >();
// Do some stuff, omitted for brevity
verify( mockStore ).setWhatever( eq( blobs ) );
这失败了,因为 byte[] 上的 'equals()' 进行了引用比较(而且它不是同一个引用)。
我是否缺少一些简单的东西来比较 byte[] 的两个集合?我需要使用特殊的匹配器来进行比较吗?通常我会使用 Arrays.equal(),但我不知道如何告诉 Mockito 使用它来比较元素。有什么建议吗?
最佳答案
没有 deepEquals mockito 匹配器。但是,您可以在一些测试助手中编写一个代码,例如:
public static Collection<byte[]> sameHashes(Collection<byte[]> hashes) {
class CollectionOfHashesMatcher extends ArgumentMatcher<Collection<byte[]>> {
public boolean matches(Collection<byte[] actualListOfHashes) { /* ... */ }
public void describeTo(Description description) { /* ... */ }
};
return argThat(new CollectionOfHashesMatcher(hashes));
}
应该给出类似这样的东西:
verify(mockStore).setWhatever(sameHashes(blobs));
关于java - 验证 Collection<byte[]> 与 Mockito 的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261337/