#java #assertj
#java #assertj
Вопрос:
С помощью Assertj я могу anyMatch
проверить, есть ли в коллекции хотя бы один элемент, соответствующий предикату, например
var list = List.of("abc", "xyz")
assertThat(list).anyMatch(element -> element.endsWith("xyz"));
Но как мне проверить, есть ли в коллекции ровно один элемент, соответствующий предикату?
Ответ №1:
Как насчет использования фильтра? https://github.com/assertj/assertj-core/blob/9eceff23e5b019af3d09c3e9bbc58126d51c02b6/src/main/java/org/assertj/core/api/AbstractIterableAssert.java#L3283
var list = List.of("a", "b", "c!");
assertThat(list)
.filteredOn(element -> element.endsWith("!"))
.hasSize(1);
Комментарии:
1. кажется, это работает, хотя я бы ожидал, что там будет менее подробный синтаксис
2. Я думаю, есть много возможных способов, которыми люди могут утверждать коллекцию. Возможно, поднимите PR против AssertJ с предложенной вами альтернативой
hasOneMatch
или чем-то подобным …?