我有一个可选列表,例如List<Optional<String>> optionals
,我喜欢在其上使用assertj
声明几件事。
但是我无法正确执行此操作-我只能在单个Optional上找到示例。
我当然可以自己做所有检查
Assertions.assertThat(s).allMatch(s1 -> s1.isPresent() && s1.get().equals("foo"));
并将它们链接起来,但我仍然有一种感觉,那就是通过api有一种更聪明的方法。
我在这里错过了什么吗?assertj中是否不支持List<Optional<T>>
?
答案 0 :(得分:1)
AssertJ似乎没有为可选对象的集合提供实用程序,但是您可以迭代列表并对每个项目执行断言。
list.forEach(element -> assertThat(element)
.isPresent()
.hasValue("something"));
也许 更好的方法是收集所有断言,而不是在第一个断言处停止。您可以以不同的方式使用SoftAssertions
,但我更喜欢以下一种方式:
SoftAssertions.assertSoftly(softly ->
list.forEach(element -> softly.assertThat(element).isPresent())
);