AssertJ: список списков FlatMap после вызова извлечения
Итак, у меня есть пара списков Map of String/String, и я хочу после извлечения объединить возвращенные списки в один список, в котором я могу выполнить больше утверждений:
MyTest.java
Map<String, List<String>> testMap = new HashMap<>();
List<String> nameList = newArrayList("Dave", "Jeff");
List<String> jobList = newArrayList("Plumber", "Builder");
List<String> cityList = newArrayList("Dover", "Boston");
testMap.put("name", nameList);
testMap.put("job", jobList);
testMap.put("city", cityList);
assertThat(testMap).hasSize(3)
.extracting("name", "city")
//not sure where to go from here to flatten list of lists
// I want to do something like .flatMap().contains(expectedValuesList)
Когда я вызываю извлечение, он вытягивает значения списка в список списков, что нормально, но после этого я не могу вызвать flatExtracting, так как нет имен для передачи свойств, и из того, что я прочитал, не похоже как пользовательский экстрактор будет уместно (или я не совсем уверен, как его собрать). Есть ли другой способ сгладить список списков, которые я получаю обратно? Я мог бы пойти немного более длинным путем и сделать утверждения в списке списков, или использовать лямбду перед утверждением, чтобы собрать результаты, но я хотел бы сохранить утверждение как единое целое (например, некоторые утверждения карты затем связывают некоторые утверждения в содержимом)
1 ответ
flatExtracting
не находится в API утверждений карты (пока), что вы можете вместо этого:
assertThat(testMap)
.hasSize(3)
.extracting("name", "city", "job")
.flatExtracting(list -> ((List<String>) list))
.contains("Dave", "Jeff", "Plumber", "Builder", "Dover", "Boston");
Я закончил создание https://github.com/joel-costigliola/assertj-core/issues/1034 для поддержки этого варианта использования