AssertJ 是否在以 Consumer 作为参数的可迭代对象上提供断言方法?
Does AssertJ provide an assertion method on iterables that has a Consumer as argument?
AssertJ 为 Java Optional
对象提供方法 hasValueSatisfying(Consumer<T> requirement)
。此方法允许像这样在可选值上创建断言:
assertThat(myOptional).hasValueSatisfying(v -> {
assertThat(v.getFirstName()).isEqualTo("Stephen");
assertThat(v.getLastName()).isEqualTo("Smith");
assertThat(v.getAge()).isEqualTo(22);
});
是否有任何等效的集合方法?
因为我可以像这样滥用方法 allMatch(Predicate<? super T> predicate)
assertThat(myIcelanderFriends).extracting(Person::getAddress)
.allMatch(a -> {
assertThat(a.getCountry()).isEqualTo("Iceland");
assertThat(a.getPhoneContryCode()).isEqualTo("+354");
assertThat(a.getSurname()).endsWith("son");
return true; // Predictes must return a boolean
});
但随后我必须添加误导性的 return true;
行,因为谓词需要 return 值。我更希望这里也有 haveValuesSatisfying(Consumer<T> requirement)
方法。
我监督了这样的方法还是它不存在(还)?
不,目前还没有这样的方法...但将在 3.6.0 中:
https://github.com/joel-costigliola/assertj-core/issues/711
AssertJ 为 Java Optional
对象提供方法 hasValueSatisfying(Consumer<T> requirement)
。此方法允许像这样在可选值上创建断言:
assertThat(myOptional).hasValueSatisfying(v -> {
assertThat(v.getFirstName()).isEqualTo("Stephen");
assertThat(v.getLastName()).isEqualTo("Smith");
assertThat(v.getAge()).isEqualTo(22);
});
是否有任何等效的集合方法?
因为我可以像这样滥用方法 allMatch(Predicate<? super T> predicate)
assertThat(myIcelanderFriends).extracting(Person::getAddress)
.allMatch(a -> {
assertThat(a.getCountry()).isEqualTo("Iceland");
assertThat(a.getPhoneContryCode()).isEqualTo("+354");
assertThat(a.getSurname()).endsWith("son");
return true; // Predictes must return a boolean
});
但随后我必须添加误导性的 return true;
行,因为谓词需要 return 值。我更希望这里也有 haveValuesSatisfying(Consumer<T> requirement)
方法。
我监督了这样的方法还是它不存在(还)?
不,目前还没有这样的方法...但将在 3.6.0 中: https://github.com/joel-costigliola/assertj-core/issues/711