Проверка определенных свойств значений карты (предикат) с помощью Hamcrest (Java 8) - PullRequest
0 голосов
/ 30 сентября 2018

С помощью AssertJ я могу проверить, что Map имеет ключ со ссылочным значением, удовлетворяющим конкретному Consumer:

@AllArgsConstructor
@Getter
public static class User {
    private Long id;
    private String name;
}

@Test
public void x() {
    Map<String, User> map = new HashMap<>();
    map.put("key", new User(123, "Random Hacker"));
    Assertions.assertThat(map).hasEntrySatisfying("key", __ -> {
        Assertions.assertThat(__.getName()).isEqualTo("Random Hacker");
    });
}

Можно ли проверить условия для конкретного значения Map для данного ключа (вместе с ключом /наличие значения) с Hamcrest?

ПРИМЕЧАНИЕ public SELF hasEntrySatisfying(K key, Consumer<? super V> valueRequirements) было добавлено в AspectJ с версии 3.6.0 (2016-11-21).

1 Ответ

0 голосов
/ 03 октября 2018

Согласно Использование Hamcrest для тестирования - Учебное пособие В Hamcrest доступен метод hasEntry.

Его можно использовать как , например :

org.hamcrest.MatcherAssert.assertThat(myMap, org.hamcrest.Matchers.hasEntry("bar", "foo"))

Если вам нужен более общий сопоставитель, есть этот метод:

Пример:

assertThat(myMap, hasEntry(equalTo("bar"), equalTo("foo")))

Любой из множества сопоставителей из Hamcrest или ваш собственный сопоставительможет использоваться вместо «equalTo».

...