0

方法就是这样。

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)));

在这种情况下,断言总是正确的,因为它hasValueSatisfyingConsumer<T>用作参数。但是,我想以以下方式使用 - AssertJ 方式

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

4

1 回答 1

2

我会使用 AssertJ提取功能

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

我在这里假设 usersList<User>不是List<User>.

于 2017-04-06T21:56:53.887 回答