Меняем appsettings.json на лету и кормим его в DI - PullRequest
0 голосов
/ 12 мая 2019

Я пишу интеграционные тесты для своего проекта, и у меня есть следующий сценарий. У меня есть базовый класс, от которого наследуются все тестовые классы. Конструктор моего базового класса выглядит так:

public KrampHubServiceIntegrationTestBase()
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
            .Build();

        _apiSettings = config.GetSection("ApiSettings").Get<ApiSettings>();

        var builder = new WebHostBuilder()
            .UseStartup<Startup>()
            .UseConfiguration(config);

        var server = new TestServer(builder);
        _client = server.CreateClient();
    }

Теперь, когда он вызывает .UseStartup () Я полагаю, это точка, в которой говорится о том, чтобы перейти в мой другой проект (запуск является частью проекта, который я тестирую) и использовать этот запуск (который вводит различные интерфейсы и реализации, где есть также значения моего appsettings.json). Мне нужно изменить appsettings.json, сеанс ApiSettings до того, как Startup начнет работать. Как мне этого добиться? Заранее спасибо!

...