Рубрики
Без рубрики

Изучение весенней загрузки TestRestTemplate

Узнайте, как использовать новую панель TestRestTemplate в весенней загрузке для тестирования простого API.

Автор оригинала: baeldung.

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();
ResponseEntity response = 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");
ResponseEntity response = 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);
ResponseEntity response = 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();
ResponseEntity response = 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);
ResponseEntity response = testRestTemplate.getForEntity(
  FOO_RESOURCE_URL + "/1", String.class);
 
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));

6. Заключение

Вы можете проверить примеры, представленные в этой статье более на GitHub .