Как я могу создать и запустить веб-хост внутри моей тестовой библиотеки? - PullRequest
0 голосов
/ 11 февраля 2019

В настоящее время я работаю над довольно простой тестовой библиотекой.Решение также содержит ASP.NET Core Webhost, который обрабатывает простые операции CRUD.Я хочу выполнить модульное тестирование этого приложения ASP.NET Core без необходимости запуска обоих проектов, поэтому я создаю новый WebHostBuilder внутри моей тестовой библиотеки NUNit.

[OneTimeSetUp]
public void SetupHost()
{
    var webhostBuilder = new WebHostBuilder()
        .UseKestrel()
        .UseIISIntegration()
        .UseContentRoot("root")
        .UseStartup(typeof(Startup))
        .ConfigureAppConfiguration((builderContext, config) =>
        {
            config.AddJsonFile("config1", false);
            config.AddJsonFile("config2", false);
        });

    webhostBuilder
        .Build()
        .Run();
}

Проблема в том, что SetupHost() никогдазаканчивается, потому что Run() блокирует поток до тех пор, пока хост не завершит работу.

Как я могу запустить новый веб-хост, а после того, как он успешно запустится, запустить мои модульные тесты?

1 Ответ

0 голосов
/ 11 февраля 2019

Удерживайте IWebHost и используйте Start вместо

IWebHost host;

[OneTimeSetUp]
public void SetupHost() {
    var webhostBuilder = new WebHostBuilder()
        .UseKestrel()
        .UseIISIntegration()
        .UseContentRoot("root")
        .UseStartup(typeof(Startup))
        .ConfigureAppConfiguration((builderContext, config) =>
        {
            config.AddJsonFile("config1", false);
            config.AddJsonFile("config2", false);
        });

    host = webhostBuilder.Build();

    host.Start(); //Starts listening on the configured addresses.
}

Позже позвоните StopAsync, чтобы попытаться изящно закрытьхостов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...