Я чувствую, что здесь не хватает чего-то очевидного, но документация меня подводит. Я пытаюсь сравнить две карты, игнорируя набор полей в assertJ. Я хотел бы увидеть этот проход assert:
private static final String[] IGNORED_FIELDS = { "ignored", "another" };
private static final Map<String, Object> TEST_PAYLOAD = ImmutableMap.of("test", "payload", "example", "value", "ignored", "field");
private static final Map<String, Object> COMPARISON_PAYLOAD = ImmutableMap.of("test", "payload", "example", "value", "another", "ignored field");
// assert fails
assertThat(TEST_PAYLOAD).isEqualToIgnoringGivenFields(COMPARISON_PAYLOAD, IGNORED_FIELDS);
Однако сравнение, которое на самом деле происходит, относится к объектам карты и не работает на таких вещах, как size, modCount, threshold, et c. Кроме того, он фактически не игнорирует поля, перечисленные при сравнении таблиц, ключей и значений. Я также пробовал использовать
assertThat(TEST_PAYLOAD).usingRecursiveComparison().ignoringGivenFields(IGNORED_FIELDS).isEqualTo(COMPARISON_PAYLOAD);
, но это не удалось, потому что он пытался сравнить игнорируемые поля. Есть ли здесь элегантное решение, или мне придется вручную перебирать ключи?