如何使用 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>
的可选项。
方法就是这样。
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>
的可选项。