Wie kombinieren Sie mehrere Mockito Matcher mit einem logischen "und"/"oder"?
Ich würde gerne überprüfen, mit Mockito, dass ein string-argument, das zwei Bedingungen erfüllt:
verify(mockClass).doSomething(Matchers.startsWith("prefix"));
verify(mockClass).doSomething(Matchers.endsWith("suffix"));
Wie kombiniert man diese beiden in einer Anweisung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist möglich mit
org.mockito.AdditionalMatchers
:Gibt es auch
org.mockito.AdditionalMatchers.or
undorg.mockito.AdditionalMatchers.not
.and
ist ? Ich kann es nicht finden.@SafeVarargs public static <T> T and(T... matchers) { return stream(matchers).reduce(argThat(any -> true), AdditionalMatchers::and); }
Vorherige Kommentare gerufen haben, dass
and
dauert nur zwei Argumente, und dass eine Variante, die dauert drei oder mehr wäre von Vorteil. Der folgende code löst dieses Problem rekursiv, so dass mehrere Matcher festgelegt werden, varargs:vorausgesetzt, die folgenden Importe:
@SafeVarargs public static <T> T and(T... matchers) { return stream(matchers).reduce(argThat(any -> true), AdditionalMatchers::and); }