2016-07-14 5 views
0

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) 방법을 가지고 싶어합니다. 나는 그러한 방법을 감독 했는가 또는 존재하지 않는가 (아직)?

+0

'myIcelanderFriends.stream()지도 (사람 :: getAddress에) .forEach (A - (> {assertThat. ...); ...});'? –

+0

@ JBNizet 귀하의 제안은 유효한 해결책입니다. 그러나 내 관점에서 볼 때이 코드 행은 assertThat으로 시작하지 않으므로이 코드 행이 일부 어설 션을 수행한다는 것을 즉각적으로 볼 수 없다는 단점이 있습니다. – Joern

답변