В настоящее время я выполняю некоторые модульные тесты, и часть функциональности заключается в вызове API (это слишком много и слишком чувствительно для работы, чтобы полностью объяснить, что он здесь делает).По сути, API получит запрос, выполнит некоторую обработку и направит этот запрос соответствующей стороне.Мне нужно протестировать этот код, абстрагировать его невозможно, поскольку он уже достаточно хорошо абстрагирован, но есть некоторые жесткие зависимости от HttpClient
, которые я не могу удалить (на каком-то этапе мне придется вызывать его ...).
Я использовал Owin TestServer для создания сервера webapi в памяти,
См. Strathweb здесь: https://www.strathweb.com/2013/12/owin-memory-integration-testing/
Дэвид Уитни здесь: http://www.davidwhitney.co.uk/Blog/2015/01/07/testing-an-asp-net-webapi-app-in-memory/
и DontCodeTired: http://dontcodetired.com/blog/post/In-Process-Http-Server-for-Integration-Test-Faking-with-Owin-Katana-and-WebAPI
Проблема, с которой я столкнулся, заключается в том, что сервер WebApi, который я создаю для использования для запросов, автоматически обнаружит другой API в проекте и выполнит запросы кчто вместо того, чтобы использовать мой контроллер модульного тестирования / макета.
Как я могу использовать объект HttpConfiguration
, используемый в классе WebApp.Start<**Startup**>()
, чтобы использовать только один контроллер?Я имею в виду этот класс:
internal class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.EnsureInitialized();
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
app.UseWebApi(config);
}
}
Мне неясно, как решить эту проблему, так как все примеры в Интернете говорят о сопоставлении маршрутов HTTP, а не об удалении / добавлении маршрутов вручную.
Если у вас есть вопросы /критику, пожалуйста, добавьте комментарий, и я обновлю вопрос как можно лучше, я чувствую, что могу быть немного ограничен в том, что я могу публиковать из-за работы.