Как бы я сделал глубокое сравнение двух карт в модульном тесте

В настоящее время я борюсь с тем, как убедиться, что две карты имеют одинаковые ключи/значения в модульном тесте, игнорируя при этом некоторые ключи. Это должно применяться рекурсивно, так как значение на карте может снова быть картой, поэтому я хочу проверить все дерево.

Возможно, здесь будет полезен пример:

Map<String, Object> mapA = Map.of("foo", "bar", "description", "foobar", "submap", Map.of("subFoo", "subBar", "description", "subFooBar"));
Map<String, Object> mapB = Map.of("foo", "bar", "description", "barfoo", "submap", Map.of("subFoo", "subBar", "description", "subBarFoo"));

Эти 2 карты следует считать равными в отношении результата теста.

Я попытался решить это следующим способом, но, к сожалению, он не работает.

assertThat(mapA)
        .usingRecursiveComparison()
        .ignoringFieldsMatchingRegexes(".*description")
        .ignoringFields("description")
        .isEqualTo(mapB);

Кто-нибудь знает, как это решить?


person digital-h    schedule 19.01.2021    source источник
comment
Отвечает ли это на ваш вопрос? Сравнить карты, игнорируя заданные поля   -  person Amongalen    schedule 19.01.2021
comment
К сожалению, нет, так как это не фильтрация на более глубоком уровне, а только ключи верхнего уровня.   -  person digital-h    schedule 19.01.2021