Класс ClientRequestFilter
является интерфейсом, поэтому его можно смоделировать либо с помощью метода stati c Mockito.mock
, либо пометив поле как @Mock
в тесте. Итак, если вы хотите проверить, вызывается ли метод setUri
, вы должны сделать следующее в своем методе тестирования:
CustomFilter customFilter = new CustomFilter();
customFilter.filter(context);
Mockito.verify(context, Mockito.once()).setUri(ArgumentMatchers.any(URI.class));
Для более старых версий Mockito:
CustomFilter customFilter = new CustomFilter();
customFilter.filter(context);
Mockito.verify(context, Mockito.once()).setUri(Matchers.any());
You не нужно проверять, что базовая реализация работает. Поскольку вы используете интерфейс, вы будете верить, что реализация, которая у вас будет во время выполнения, является правильной, поскольку нет необходимости проверять ваши зависимости. Вы просто должны быть уверены, что написанный вами код работает и пересылает запросы другим классам.
Аналогичным образом вы можете проверить другое требование:
Mockito.when(context.getMethod()).thenReturn("POST");
MultivaluedMap headers = Mockito.mock(MultivaluedMap.class);
Mockito.when(context.getHeaders()).thenReturn(headers);
CustomFilter customFilter = new CustomFilter();
customFilter.filter(context);
Mockito.verify(context, Mockito.once()).setUri(Matchers.any());
Mockito.verify(context, Mockito.once()).setMethod(Matchers.any());
Mockito.verify(context, Mockito.once()).getHeaders();