Тестирование контроллера

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7

Последнее обновление: 12.12.2019

В прошлой теме был создан контроллер Web API, и протестирована работа метода GET. Однако напрямую из строки браузера кроме запросов GET другие типы запросов мы протестировать не можем. Конечно, мы можем создать клиент в виде веб-страницы, мобильного приложения под какую-нибудь платформу или даже графического или консольного десктопного приложения, но создание клиента может занять довольно много времени, тогда как нам просто надо протестировать обработку запросов.

Для тестирования контроллера Web API можно применять специальные инструменты, которые устанавливаются в виде отдельных приложений, либо в виде расширений для браузеров, например, Fiddler или Postman. Однако Visual Studio предоставляет еще один способ - ввод команд в окне Package Manager Console, которое для отправки запросов использует оболочку PowerShell.

Использование PowerShell

Тестирование GET-запросов

Например, в моем случае приложение запускается по адресу http://localhost:54427. Поэтому для тестирования GET-запроса на получение списка объектов от контроллера UsersController я должен ввести в Package Manager Console следующую команду:

Invoke-RestMethod http://localhost:54427/api/users -Method GET
Тестирование контроллера Web API в ASP.NET Core

Для тестирования другого GET-метода, который возвращает пользователя по id, введем другой запрос:

Invoke-RestMethod http://localhost:54427/api/users/1 -Method GET

И Package Manager Console выведет:

id name age
-- ---- ---
 1 Tom   26

Тестирование POST-запросов

Для тестирования POST-запроса необходимо передать объект в формате json с указанием некоторой дополнительной информацией. В моем случае команда выглядела бы так:

Invoke-RestMethod http://localhost:54427/api/users -Method POST -Body (@{name = "Bob"; age = 35} | ConvertTo-Json) -ContentType "application/json; charset=utf-8"

Аргумент -Body в этой команде указывает на тело запроса - тот объект, который будет отправляться на сервер. В моем случае это объект класса User, поэтому все его значения имеют ключи, которые соответствуют названиям свойств класса User. Кроме того, указываем с помощью флага ConvertTo-Json, что объект будет отправляться в формате JSON. А дополнительный аргумент -ContentType устанавливает в запросе заголовок Content-Type. В итоге эта команда возвратит следующий результат:

id name age
-- ---- ---
 3 Bob   35

После этого мы можем повторно получить список пользователей и увидеть в нем добавленный объект:

Тестирование POST запросов в Visual Studio

Тестирование PUT-запросов

Для тестирования PUT-запроса передается так же объект, только в данном случае уже надо указать id редактируемого объекта:

Invoke-RestMethod http://localhost:54427/api/users -Method PUT -Body (@{id = 3; name = "Bob Marley"; age = 44} | ConvertTo-Json) -ContentType "application/json"
Тестирование PUT запросов в Visual Studio

Тестирование запросов DELETE

В запросе DELETE необходимо передать id удаляемого объекта:

Invoke-RestMethod http://localhost:54427/api/users/3 -Method DELETE
Тестирование DELETE запросов в Visual Studio

Fiddler

Теперь рассмотрим, как использовать Fiddler. Загрузим установочный пакет по ссылке и установим.

После установки запустим проект в Visual Studio на выполнение. Параллельно откроем программу Fiddler и перейдем на вкладку Composer. На этой вкладке мы можем выбрать тип запроса (GET/POST/PUT/DELETE) и установить адрес. Так как я буду обращаться к методу, возвращающему список пользователей, то в моем случае это будет запрос GET и адрес http://localhost:54427/api/users/.

Тестирование запросов в Fiddler

После ввода адреса нажмем на кнопку Execute. После осуществления запроса в левом поле-списке запросов выберем сделанный только что запрос, и на вкладке Inspectors можно будет увидеть результат запроса - список пользователей, который Fiddler получает в сериализованном виде:

Fiddler в ASP.NET Core Web API
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850