TestServer для использования реальной базы данных SQL - PullRequest
0 голосов
/ 01 мая 2018

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

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

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

Я нашел похожий вопрос здесь call api Test server: интеграционные тесты 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;"

1 Ответ

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

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

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

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

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

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