Проверка равенства Collection <byte []> с Mockito? - PullRequest
4 голосов
/ 24 ноября 2011

Я использую Mockito для моего модульного тестирования, и я столкнулся с проблемой, где у меня есть коллекция хэшей, и я хочу проверить, что параметры были эквивалентны.

т.е. У меня есть что-то вроде

Collection< byte[] > blobs = new ArrayList< byte[] >();

// Do some stuff, omitted for brevity

verify( mockStore ).setWhatever( eq( blobs ) );

Это терпит неудачу, так как 'equals ()' в байте [] выполняет сравнение ссылок (и это не та же ссылка).

Есть ли что-то простое, что мне не хватает, чтобы сравнить две коллекции байтов []? Есть ли специальный сравнитель, который мне нужно использовать для сравнения? Обычно я бы использовал Arrays.equal (), но я не знаю, как сказать Mockito использовать это для сравнения элементов. Предложения?

1 Ответ

4 голосов
/ 24 ноября 2011

Нет подходящего средства для глубокого выравнивания. Однако вы можете написать один из них в некотором помощнике по тестированию, например:

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...