AssertJ는 Optional
개체에 대해 hasValueSatisfying(Consumer<T> requirement)
메서드를 제공합니다. 이 메소드는 다음과 같이 옵션 값에 어서션을 생성 할 수 있습니다.AssertJ는 Consumer를 인수로 가지는 iterables에 대한 assertion 메서드를 제공합니까?
assertThat(myOptional).hasValueSatisfying(v -> {
assertThat(v.getFirstName()).isEqualTo("Stephen");
assertThat(v.getLastName()).isEqualTo("Smith");
assertThat(v.getAge()).isEqualTo(22);
});
콜렉션에는 동일한 메소드가 있습니까? 원인의 나는이
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
});
같은 방법 allMatch(Predicate<? super T> predicate)
를 오용 할 수 있지만 그때는 술어가 반환 값을 필요로 오해의 소지가 return true;
라인을 추가해야합니다. 나는 또한 여기에 haveValuesSatisfying(Consumer<T> requirement)
방법을 가지고 싶어합니다. 나는 그러한 방법을 감독 했는가 또는 존재하지 않는가 (아직)?
'myIcelanderFriends.stream()지도 (사람 :: getAddress에) .forEach (A - (> {assertThat. ...); ...});'? –
@ JBNizet 귀하의 제안은 유효한 해결책입니다. 그러나 내 관점에서 볼 때이 코드 행은 assertThat으로 시작하지 않으므로이 코드 행이 일부 어설 션을 수행한다는 것을 즉각적으로 볼 수 없다는 단점이 있습니다. – Joern