如何使用 Assertj 断言列表内容的属性?

How to assert attribute of contents of a list using Assertj?

方法就是这样。

List<User> someMethod() {
    User user[] = new Users[3];
    user[0] = new User();
    user[0].setImage(new Image(Constants.HOME));
    user[1] = new User();
    user[1].setImage(new Image(Constants.NOT_HOME));
    user[2] = new User();
    user[2].setImage(new Image(Constants.HOME));   
    return Arrays.asList(user);
}

我怎样才能测试上面的代码。我需要验证一些用户在 HOME 上有图像。

我可以尝试重新构建整个用户列表并进行比较。但是,我不想那样做。

我试过这样的东西,

assertThat(Optional.of(service.someMethod())).hasValueSatisfying((a)->a.stream().allMatch((b)->b.getImage().getImageUrl().equals(Constants.HOME)));

断言在此上下文中始终为真,因为 hasValueSatisfying 使用 Consumer<T> 作为参数。但是,我想以下列方式使用 - AssertJ way

我可以使用 Hamcrest 以某种方式解决这个问题吗?

我会使用 AssertJ extracting feature:

assertThat(users).extracting(user -> getImage().getImageUrl())
                 .contains(Constants.HOME)

我在这里假设 users 是 List<User> 而不是 List<User> 的可选项。