1. Обзор
В этой статье рассматривается весенняя загрузка TestRestTemplate . Это можно рассматривать как продолжение Путеводитель по отдыху , которые мы настоятельно рекомендуем читать, прежде чем сосредоточиться на TestRestTemplate . TestRestTemplate может рассматриваться в качестве привлекательной альтернативы РестТемплет .
2. Мейвен зависимостей
Использовать TestRestTemplate , Вы должны иметь соответствующую зависимость, как:
org.springframework.boot spring-boot-test 2.2.2.RELEASE
Вы можете найти последнюю версию на Мавен Центральный .
3. TestRestTemplate и RestTemplate
Оба этих клиента вполне подходят для написания интеграционных тестов и могут очень хорошо справляться с общением с API-передачи HTTP.
Например, они предоставляют нам те же методы стандартных методов, заготовки и другие конструкции HTTP.
И все эти операции хорошо описаны в Руководстве по RestTemplate , поэтому мы не будем возвращаться к ним здесь.
Вот простой пример запроса GET:
TestRestTemplate testRestTemplate = new TestRestTemplate(); ResponseEntityresponse = testRestTemplate. getForEntity(FOO_RESOURCE_URL + "/1", String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
Несмотря на то, что оба класса очень похожи, TestRestTemplate не распространяется РестТемплет и предлагает несколько очень интересных новых функций.
4. Что нового в TestRestTemplate?
4.1. Конструктор с основными учетными данными Auth
TestRestTemplate обеспечивает конструктора, с которым мы можем создать шаблон с указанными учетными данными для базовой проверки подлинности .
Все запросы, выполненные с помощью этого экземпляра, будут проверены с помощью предоставленных учетных данных:
TestRestTemplate testRestTemplate = new TestRestTemplate("user", "passwd"); ResponseEntityresponse = testRestTemplate. getForEntity(URL_SECURED_BY_AUTHENTICATION, String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
4.2. Конструктор с httpClientOption
TestRestTemplate также позволяет нам настроить основной клиент Apache HTTP с помощью HttpClientOption который является enum в TestRestTemplate со следующими вариантами: ENABLE_COOKIES, ENABLE_REDIRECTS , и SSL .
Рассмотрим быстрый пример:
TestRestTemplate testRestTemplate = new TestRestTemplate("user", "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES); ResponseEntityresponse = testRestTemplate. getForEntity(URL_SECURED_BY_AUTHENTICATION, String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK))
В приведеном выше примере мы используем параметры вместе с базовой аутентификацией.
Если нам не нужна аутентификация, мы все равно можем создать шаблон с простым конструктором:
TestRestTemplate (TestRestTemplate.HttpClientOption.ENABLE_COOKIES)
4.3. Новый метод
Конструкторы могут не только создать шаблон с указанными учетными данными. Мы также можем добавить учетные данные после создания шаблона. TestRestTemplate дает нам метод сBasicAuth () который добавляет учетные данные к уже существующему шаблону:
TestRestTemplate testRestTemplate = new TestRestTemplate(); ResponseEntityresponse = testRestTemplate.withBasicAuth( "user", "passwd").getForEntity(URL_SECURED_BY_AUTHENTICATION, String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
5. Использование обеих TestRestTemplate и RestTemplate
TestRestTemplate может работать в качестве обертки для РестТемплет , например, если мы вынуждены использовать его, потому что мы имеем дело с устаревшим кодом. Ниже вы можете увидеть, как создать такую простую обертку:
RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder(); restTemplateBuilder.configure(restTemplate); TestRestTemplate testRestTemplate = new TestRestTemplate(restTemplateBuilder); ResponseEntityresponse = testRestTemplate.getForEntity( FOO_RESOURCE_URL + "/1", String.class); assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
6. Заключение
Вы можете проверить примеры, представленные в этой статье более на GitHub .