AssertJは、Java Optional
オブジェクトのメソッドhasValueSatisfying(Consumer<T> requirement)
を提供します。このメソッドでは、次のような任意の値にアサーションを作成できます。AssertJはコンシューマを引数として持つイテラブルのアサーションメソッドを提供していますか?
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;
行を追加する必要があります。私はここにもhaveValuesSatisfying(Consumer<T> requirement)
メソッドを持っていることを好むだろう。 私はそのような方法を監督したのですか、それとも存在しませんか?
'myIcelanderFriends.stream()マップ(人物::のgetAddress).forEach(( - > {assertThat。 ...); ...}); '? –
@JBNizetあなたの提案は有効な解決策です。しかし、私の観点からは、 'assertThat'で始まらないので、このコード行がいくつかのアサーションを実行することを私が即座に見ることができないという欠点があります。 – Joern