TestServer для использования реальной базы данных sql

Я создаю интеграционные тесты для ASP.NET Core WebAPI. Я пытаюсь заставить TestServer использовать настоящую, а НЕ в памяти базу данных sql-server.

Первая проблема заключалась в том, что WebHostBuilder не видел строку подключения в «connectionstring.json», поэтому я переместил cofnig строки подключения в «appsettings.json». Теперь WebHostBuilder загружает строку подключения из файла appsettings.json, но не загружает никаких данных из базы данных sql-server при выполнении запроса (возвращает пустую коллекцию). Это происходит, когда я запускаю его в обычном режиме (не как тестовый сервер) и выполняю GET через Postman.

У меня вопрос: «Можно ли заставить TestServer использовать базу данных sql-server и как это сделать?»

Я нашел здесь похожий вопрос вызовите тестовый сервер api: тесты интеграции API ядра .net, но нет ответа, как заставить TestSever работать с базой данных sql-server.

TestServer:

_server = new TestServer(WebHost.CreateDefaultBuilder()
            .UseEnvironment("Development")
            .ConfigureAppConfiguration(AddConfigFiles)
            .UseStartup<Startup>()
           );

Метод AddConfigFiles:

        public static void AddConfigFiles(WebHostBuilderContext hostingContext, IConfigurationBuilder config)
    {
        var env = hostingContext.HostingEnvironment;
        config
            .AddJsonFile("connectionstrings.json", optional: true)
            .AddJsonFile($"connectionstrings.{env.EnvironmentName}.json", optional: true)
            .AddJsonFile("appsettings.json", optional: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

        config.AddEnvironmentVariables();
    }

Строка подключения

"Data Source = {MyServerName};Initial Catalog = {MyDatabaseName};Integrated Security=True;"
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
195
1

Ответы 1

Да, возможно, если вы хотите увидеть полную настройку, посмотрите этот ответ: https://stackoverflow.com/a/54858071/2482439

В этом примере используется база данных SQLite, но вы можете изменить конфигурацию DatabaseType для использования SQL Server или любого другого.

Помните, что файлы конфигурации должны находиться в папке тестового проекта, в котором в настоящее время выполняются тесты, область действия, путь определяется этим. Итак, если у вас есть Project.Integration.Tests, в корневой папке должны быть строки подключения.Development.json и appsettings.Development.json.

Кроме того, вы, вероятно, должны установить required true для тех конфигураций, которые вам действительно нужны.

Другие вопросы по теме