Модульное тестирование, чтобы убедиться, что все необходимые сервисы добавлены в контейнер .Net Core DI - PullRequest
0 голосов
/ 27 ноября 2018

Моя команда поддерживает очень большой веб-сайт .Net Core 2.1.Множество контроллеров, множество сервисов, которые внедряются в контроллеры с помощью инжектора конструктора.

Иногда из-за ошибки разработчика класс сервиса больше не добавляется в контейнер DI во время запуска.Очевидно, что это приводит к исключению, когда MVC пытается создать контроллер, который опирается на эту службу (в ответ на входящий запрос).

Проблема в том, что это может повлиять только на некоторые слабо используемые контроллеры, поэтому наше (далеко не идеальное) регрессионное тестирование не обнаруживает ошибку регрессии.Но он все еще должен быть выбран одним из наших (очень требовательных) клиентов.

Я хотя бы писал модульный тест, который бы

  1. Создавал класс ServiceCollection (который реализуетIServiceCollection);
  2. Вызвать наш собственный метод, который добавляет все сервисы к этому набору сервисов (тот же метод, который используется при обычном запуске);
  3. Найти все контроллеры с помощью отражения и попытаться сконструировать их одинаковоMVC делает это - получая зависимые сервисы из контейнера DI.

Итак, мой вопрос:

  • Имеет ли этот подход смысл?
  • Есть лигде-нибудь пример, который я мог бы использовать?
  • Если не дать пример, как бы я достиг 1) и 3)?
...