【发布时间】:2018-10-02 04:19:19
【问题描述】:
我有一个类似的方法签名
public void add(byte[] key, Optional<Byte[]> secondaryKey) { ... }
我的测试看起来像
byte[] key = "testKey".getBytes();
byte[] secondaryKey = "secondaryKey".getBytes()
//call the method that internally calls add()
Mockito.verify(mockClass).add(key, Optional.of(ArrayUtils.toObject(secondaryKey))
在这种情况下,验证总是失败,说想要的参数与实际的不同。我有一个类似的add 方法,它只是将byte[] key 作为输入参数。对该方法的测试成功。所以我认为我在这里尝试匹配Optional参数的方式有问题。
【问题讨论】:
-
byte[]和Byte[]是不同的类型。要么将参数类型设为Optional<byte[]>,要么将secondaryKey转换为Byte[]。 -
@AndyTurner 调用
add的方法实际上在调用add 之前将secondaryKey转换为Byte[],与ArrayUtils.toObject(secondaryKey)。这就是我在验证器中使用它的原因 -
@AndyTurner 还尝试将所有内容更改为
Optional<byte[]>,但这也无济于事 -
嗯。是否与数组缺乏有用的相等性有关?
-
您需要使用
ArgumentMatcher.eq()
标签: java unit-testing mocking mockito