Удар InvalidUseOfMatchersException
при попытке захватить RetryCallback
лямбду.Я почесал голову и почесал в Интернете решение этой проблемы.
Исходный код:
public void someMethod() throws CustomException {
retryTemplate.execute(context -> {
LOGGER.info("Attempt {}", context.getRetryCount());
dao.getRecord(false);
LOGGER.info("Created successfully");
return null;
});
}
Тестовый код:
@SuppressWarnings("unchecked")
@Test
public void someTestsTest() throws Throwable {
ArgumentCaptor<RetryCallback<Object, CustomException>> retryCaptor = ArgumentCaptor.forClass(RetryCallback.class);
// ** fails to verify with InvalidUseOfMatchersException **
verify(retryTemplate).execute(retryCaptor.capture());
// -----------
RetryCallback callback = retryCaptor.getValue();
callback.doWithRetry(any(RetryContext.class));
ArgumentCaptor<Boolean> captor = ArgumentCaptor.forClass(Boolean.class);
manager.someMethod();
verify(dao).getRecord(captor.capture());
assertTrue(captor.capture());
}
Исключение:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
3 matchers expected, 1 recorded:
Я не понимаю, почему это тактерпит неудачу.Исключение указывает, что я вызываю перегруженный execute
из RetryTemplate
с 3 аргументами, но в исходном коде используется метод с 1 аргументом.Что мне здесь не хватает?
Спасибо за внимание