У вас есть NullPointerException
, потому что подпись метода использует собственный тип, и вы используете Matchers.argThat
, который возвращает объект.
При компиляции Javac добавит код автоматической распаковки около Matchers.argThat(new AnyBooleanMatcher())
, как вы сказали, он возвращает null
, так что у вас есть причина NPE.
Я почти уверен, что Javadoc mockito также говорит, что при работе с методом используется стиль 10000 *, booleanThat
с родными типами.Их использование предотвратит автоматическое распаковывание кода, введенного компилятором.
В другой теме я бы порекомендовал вам написать такой код, чтобы сделать его более читабельным.
when(mockService.search(argThat(hasValue("123")), booleanThat(isTrue()))).thenReturn("something");
// ...
private AnyBooleanMatcher isTrue() {
return new AnyBooleanMatcher();
}
private MyObjectMatcher hasValue(String value) {
return new MyObjectMatcher(value);
}