Невозможно перехватить повторный обратный вызов шаблона Spring Retry с Mockito Argument Captor - PullRequest
0 голосов
/ 27 сентября 2019

Удар 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 аргументом.Что мне здесь не хватает?

Спасибо за внимание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...