Как загрузить настройки приложений.Разработка.json из проекта в рамках тестов xUnit

#c# #.net-core #xunit

Вопрос:

В моих тестах используется HttpClient. Поэтому я создал вспомогательный метод для инициализации клиента в конструкторе всех моих тестовых файлов.

Сначала я попытался использовать AppContext.BaseDirectory, чтобы получить базовый каталог для проекта, который я пытался протестировать. Проблема в том, что он не подбирает правильное название проекта, поэтому загружает настройки приложений.Development.json из другого проекта, приводящего к сбою тестов. В итоге я жестко закодировал проект реж.

Я не могу понять, как я могу заставить его загружать настройки приложений.Development.json из проекта, который я хочу протестировать.

  public static HttpClient GetHttpClient()
    {

        // projectDir one, loads tests project.
        // var projectDir = AppContext.BaseDirectory;

      
       var projectDir = @"C:WorkSrcApplicationbinDebugnet5.0";
        
        var server = new TestServer(new WebHostBuilder()
            .UseEnvironment("Development")
            .UseConfiguration(new ConfigurationBuilder()
                .SetBasePath(projectDir)
                .AddJsonFile("appsettings.Development.json")
                .Build()
            )
            .UseStartup<Startup>()
        );
        return server.CreateClient();
    }
 

Основная проблема заключается в том, что он не может загрузить настройки для RabbitMQ, которые поступают из приложений.Файл разработки.json.

  // Load RabbitMQ config.
 var serviceClientSettingsConfig = Configuration.GetSection("RabbitMq");
 services.Configure<RabbitMqConfiguration>(serviceClientSettingsConfig);
 

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

Комментарии:

1. Не можете ли вы настроить параметры при запуске, чтобы вы могли ввести их в свой тестовый класс?

2. Они в том, что настройки не загружены, потому что он не может захватить правильные настройки приложений. Разработка.json. Проверьте, что проблема с редактированием связана с конфигурацией RabbitMQ при запуске.