Разделы портала

Онлайн-тренинги

.
Использование кастомного HttpClient в RestAssured.Net
30.07.2024 00:00

Автор: Баз Дейкстра (Bas Dijkstra)
Оригинал статьи
Перевод: Ольга Алифанова

Недавно я имел честь быть гостем шоу Test Automation Experience с Николаем Адволодкиным. В этом выпуске мы говорили про RestAssured.Net, в ходе него я выпустил версию 4.1.0, и мы обсуждали функции, добавленные в библиотеку в ходе последних релизов.

Выпуск можно найти на Youtube.

В этой короткой статье я хочу подсветить наиболее важную новую функцию RestAssured.Net версии 4.1.0 – это возможность встроить кастомный System.Net.Http.HttpClient в ваши тесты.

Для чего это нужно?

По умолчанию RestAssured.Net создает свой собственный HttpClient для отправки созданных запросов, используя гибкий синтаксис библиотеки:

[Test]
public void GetDataForUser1_CheckName_ShouldBeLeanneGraham()
{
    Given()
    .When()
        .Get("https://jsonplaceholder.typicode.com/users/1")
    .Then()
        .StatusCode(HttpStatusCode.OK)
        .Body("$.name", NHamcrest.Is.EqualTo("Leanne Graham"));
}

В большинстве ситуаций этот созданный RestAssured.Net по умолчанию HttpClient отлично способен запустить нужные вам тесты.

В некоторых случаях, однако, вы:

  • Работаете с фреймворком, который предоставляет свой собственный HttpClient и управляет им – например, Microsoft.AspNetCore.Mvc.Testing, который можно использовать для тестов ASP.NET Core API.
  • Хотите тонко настроить HttpClient и соответствующий HttpClientHandler.

В этих ситуациях было бы полезно вручную добавить HttpClient и внедрить его в ваши тесты RestAssured.Net.

Именно это и можно теперь сделать:

[Test]
public void UsingACustomHttpClient()
{
    var webAppFactory = new WebApplicationFactory<Program>();
    var httpClient = webAppFactory.CreateDefaultClient();
 
    Given(httpClient)
    .When()
        .Get("http://localhost:5154/weatherforecast")
    .Then()
        .StatusCode(HttpStatusCode.OK);
}

Пример содержит тест для минимального API ASP.NET Core, содержащегося в классе Program. Чтобы создать эффективные тесты, в которых библиотека Microsoft.AspNetCore.Mvc.Testing будет заниматься управлением настройками и запуском и остановкой API в памяти, вам нужен HttpClient, возвращаемый методами CreateDefaultClient() или CreateClient().

Как можно видеть, теперь RestAssured.NET поддерживает это, передавая HttpClient как аргумент в метод Given(). Если HttpClient предоставлен, RestAssured.Net будет пользоваться им; если это не так, он сгенерирует свой собственный и воспользуется им для отправки запросов и получения ответов.

Я очень рад, что эта возможность наконец доступна в RestAssured.Net – я уверен, что это повышает гибкость библиотеки и разнообразит возможные варианты использования.

Обсудить в форуме