Исключение InvalidUseOfMatchersException

#java #junit #mockito #matcher #hamcrest

#java #junit #mockito #сопоставитель #hamcrest

Вопрос:

Я занят написанием теста Junit с помощью Mockito.

Теперь я хочу проверить что-то вроде этого:

 verify(event).fire(
   new DefaultMonitoringEventImpl(
      any(Class.class), any(MonitorEventType.class), MonitorEventLevel.ALL, anyString()
   )
  );
  

Меня волнует только третий параметр.
когда я пытаюсь это сделать, я получаю: исключение InvalidUseOfMatchersException.

Что бы я ни пробовал, это не исправит эту проблему. Связанные темы не дадут удовлетворительного решения.

-Bgvv1983

Ответ №1:

Используйте ArgumentCaptor:

 ArgumentCaptor<DefaultMonitoringEventImpl> captor = ArgumentCaptor.forClass(DefaultMonitoringEventImpl.class);
Mockito.verify(event).fire(captor.capture());
DefaultMonitoringEventImpl actual = captor.getValue();
Assert.assertEquals(MonitorEventLevel.ALL, actual.getMonitorEventLevel());
  

Комментарии:

1. Спасибо, глупый, я об этом не подумал. Однако одно небольшое замечание по вашему решению. Mockito.verify(событие).fire (captor); должно быть: Mockito.verify(событие).fire(captor.capture());