Веб-приложение AspNetCore имеет более 100 сервисов. Как зарегистрировать все эти зависимости для проекта Unit Test - PullRequest
0 голосов
/ 08 марта 2019

Веб-приложение AspNetCore имеет более 100 сервисов, которые доступны через ServiceProvider и могут быть просмотрены в списке ServiceCollection. Примеры услуг: IConfigurtion, поставщик IConfiguration и т. Д.

Как зарегистрировать все эти зависимости для проекта Unit Test.

Полагаю, в веб-проекте эти зависимости регистрируются в методе WebHost.CreateDefaultBuilder.

public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseKestrel(options => options.AddServerHeader = false)
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();
    } 

В моем модульном тестовом проекте. Я могу зарегистрировать эти сервисы один за другим, но это неэффективно, если смотреть на длинный список зависимостей.

services.AddSingleton<IConfiguration, ConfigurationRoot>();

Возможно, они мне не нужны, но это громоздкий запуск проекта модульного тестирования и обнаружение, что эта инициализация не удалась или что-то подобное.

Примечание. Регистрация DbContext с приведенным ниже синтаксисом означает регистрацию около 12 служб.

services.AddDbContext<AppDbContext>(options =>
              options.UseInMemoryDatabase("Db"),
              ServiceLifetime.Scoped
              );

Итак, мой вопрос, Существуют ли какие-либо методы, которые я могу вызвать, чтобы зависимости правильно определялись для моего проекта UnitTest, как это происходит с веб-проектом.

Примечание: я могу обрабатывать те сервисы, которые зарегистрированы мной в сети. Я обеспокоен только теми, которые зарегистрированы за этой сценой Framework.

Любая помощь приветствуется. Спасибо!

...