Optional
не выполняет deepEquals
, поэтому проверка на равенство завершится неудачей, учитывая, что вы передали Byte[]
в Optional
.
Вы можете увидеть этот отчет об ошибке изПользователь, столкнувшийся с подобной проблемой. JDK-8075723
Возможно, вы захотите использовать некоторые ArgumentMatchers
для сравнения аргументов, передаваемых в вашу ложную запись.
Поскольку вы проходите через Optional
Вы можете развернуть этот объект, используя ArgumentMatchers.argThat
, что требует реализации метода ArgumentMatcher.matches
.
Mockito.verify(mockClass).add(ArgumentMatchers.eq(key), ArgumentMatchers.argThat(r -> {
return r.isPresent() && Objects.deepEquals(secondaryKey, r.get())
));
Редактировать:
Вы также можете использовать ArgumentCaptor
, если предпочитаете сниматьсостояние параметров, передаваемых в макеты и выполняемых утверждений.
ArgumentCaptor<Optional> captor =ArgumentCaptor.forClass(Optional.class)
verify(pojo).add(eq(key), captor.capture());
Optional<byte[]> result = captor.getValue();
assertTrue(result.isPresent());
assertArrayEquals(secondaryKey, result.get());