#asp.net-core #dependency-injection #integration-testing
Вопрос:
Я использую класс WebHostBuilder для настройки сервера для интеграционных тестов в asp.net ядро. Хотя это работает как заклинание, теперь я столкнулся с проблемами со службами, у которых есть параметр конструктора наряду с другими зависимостями. Эти службы зарегистрированы в моем запуске по следующей схеме:
services.AddSingleton<MyInterface, MyClass>(x =>
new MyClass(x.GetRequiredService<SomeInterfaceDependency>(),
x.GetRequiredService<AnotherInterfaceDependency>(),
someStringOrEnumOrWhateverParameter));
Когда я запускаю тесты, мои запросы, использующие эту службу, завершаются неудачно, и я даже не понимаю, в какой момент запрос завершается неудачно. Диагностическая информация, которую я получаю, ограничена трассировкой стека в одну строку:
ThreadOperations.ExecuteWithAbortSafety(Action action)
Итак, мой вопрос: как я могу работать со службами, у которых есть параметры конструктора в интеграционных тестах? Любые указатели в правильном направлении очень ценятся. Спасибо.
Ответ №1:
Вам не следует создавать WebHostBuilder
s вручную, вместо этого используйте Microsoft.AspNetCore.Mvc.Testing
пакет, его TestServer
и WebApplicationFactory
классы, которые делают все это за вас, как описано в MSDN: