Отладка.NetCore API из xUnit
Я разработал два проекта на основе.Net Core 2.1.
- WebAPI
- XUnit
WebAPI использует IIS в качестве платформы хостинга. xUnit подключается к WebAPi, используя класс HttpClient для использования http.
Я попытался подключиться к сервису w3wp, чтобы перехватить метод Get в контроллере, но он не увенчался успехом. Кроме того, я запустил еще одну среду и запустил Debug в проекте WebAPI, но это не помогло.
Кто знает, где проблема и как ее решить.
1 ответ
На docs.microsoft.com есть отличное руководство, как это сделать: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.1
По сути, вам нужно установить пакет Microsoft.AspNetCore.Mvc.Testing в ваш тестовый проект и получить класс "фабрика тестовых приложений" из WebApplicationFactory в вашем тестовом проекте. Затем в каждом из ваших тестовых классов вы захотите создать экземпляр класса, а затем использовать WebApplicationFactory.CreateClient для получения экземпляра HttpClient. Затем вы используете экземпляр HttpClient для вызова конечных точек API по мере необходимости.
По сути, приложение WebAPI будет работать в том же процессе, что и ваши тесты, что значительно упрощает отладку.
Вы также, вероятно, захотите добавить файл конфигурации среды "test" для тестируемого приложения (например, appsettings.Test.json) и настроить WebApplicationFactory на использование той же среды для тестовых прогонов, чтобы тестовые прогоны не затрагивали вашу среду разработки (включая базу данных) и напишите некоторый код в классе "test app factory" для повторного создания / очистки тестовых баз данных или других хранилищ, используемых в ваших тестах.