Mockito «неуместный аргумент обнаружил» ошибку внутри метода «когда» - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь смоделировать вызов шпионского объекта и продолжаю получать org.mockito.exceptions.misusing.InvalidUseOfMatchersException.

Пересмешивание вызова метода выглядит следующим образом:

@Spy
private AmazonS3Client m_clientToMockServer;

// (...)

Mockito.when(m_clientToMockServer.listObjects(Mockito.anyString(), Mockito.anyString()))
            .thenAnswer((Answer<ObjectListing>) invocation -> {
                ObjectListing objectListing = (ObjectListing) invocation.callRealMethod();
                objectListing.setMaxKeys(2);
                return objectListing;
            });

Сообщение об ошибке гласит:

Нельзя использовать сопоставления аргументов вне проверки или создания заглушки.

Примеры правильного использования сопоставителей аргументов:

when(mock.get(anyInt())).thenReturn(null);
doThrow(new RuntimeException()).when(mock).someVoidMethod(anyObject());
verify(mock).someMethod(contains("foo"))

Кроме того, эта ошибка может отображатьсяпотому что вы используете сопоставления аргументов с методами, которые нельзя смоделировать.Следующие методы не могут быть заданы / проверены: final / private / equals () / hashCode ().Методы насмешки, объявленные в закрытых родительских классах, не поддерживаются.

Я проверил, что AmazonS3Client.listObjects(String, String) не является ни конечным, ни закрытым, поэтому я могу только предположить, что на самом деле я использовал неправильное совпадение параметров,И на самом деле, если я использую любую другую фактическую строку вместо Mockito.anyString() соответствия, этот фрагмент кода работает.

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