Я хочу высмеять поведение, возвращая различные объекты CloseableHttpResponse
на основе URL-адресов. Я ищу URL1
Я хочу сообщить 302
и url2
Я хочу дать 200
ok отклик. Метод в этом тесте принимает url
как входной сигнал и создает объект запроса HttpGet
и делает что-то с httpresponse
объектом. Но я не могу сопоставить аргумент HttpGet
. Есть ли способ проверить этот метод. Постскриптум httpClient
- также макет объекта. Следующий код не работает, так как ожидание не может издеваться над новым HttpGet(Url)
.Объект совпадения HttpGet, который создается внутри метода под тестом
CloseableHttpResponse httpResponse = mock(CloseableHttpResponse.class);
when(httpClient.execute(new HttpGet(URL1))).thenReturn(httpResponse);
when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("1.1",0,0),HttpStatus.SC_MOVED_PERMANENTLY,""));
when(httpResponse.getHeaders(HttpHeaders.LOCATION)).thenReturn(new Header[]{new BasicHeader(HttpHeaders.LOCATION, URL2)});
CloseableHttpResponse httpResponse1 = mock(CloseableHttpResponse.class);
when(httpClient.execute(new HttpGet(URL2))).thenReturn(httpResponse1);
when(httpResponse.getStatusLine()).thenReturn(new BasicStatusLine(new ProtocolVersion("1.1",0,0),HttpStatus.SC_OK,""));
when(httpResponse.getHeaders(HttpHeaders.CONTENT_LENGTH)).thenReturn(new Header[]{new BasicHeader(HttpHeaders.CONTENT_LENGTH, "0")});
Заранее спасибо.
Вы не можете «подделывать» или «сопоставлять» объект HttpGet? Ваш вопрос не совсем ясен, но я думаю, что вы ищете это: https://mrtnrbrts.wordpress.com/2012/09/12/custom-matchers-with-mockito/ – Taylor
Привет Тейлор Спасибо. Матч будет правильным словом. отредактирован :). Можете ли вы подробнее рассказать о том, как ссылка, которую вы предоставили, решает мою проблему. –
Я бы серьезно предложил переместить эти тесты в WireMock. –