0

我正在编写一些针对在 docker 上运行的 SQL Server 实例运行的 aspnetcore 集成测试。我计划使用 xUnit 集合并在不同的端口上为特定的测试集合启动一个单独的 SQL Server 容器实例。所以多个 SQL Server 实例在不同的端口上运行。我创建了一个单独的appsettings.testing.json文件,将在测试host开始时加载。此设置 json 文件具有测试host开始进行测试时将用于连接的连接字符串。

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },

  "ConnectionStrings": {
    "TestDb": "Server=.;Database=MyDb;MultipleActiveResultSets=true;user id=sa;password=Password01!;TrustServerCertificate=True"
  }
}

TestDb有没有办法让我在开始测试时覆盖 key 的值host?与启动主机之前一样,我在特定端口上启动 SQL 容器,并希望host使用修改后的连接字符串,该字符串将包含port并连接到它。

我一直在检查文档,但无法理解是否有办法在运行时执行此操作?

4

1 回答 1

0

您可以在配置测试网络主机时覆盖设置:

builder.ConfigureAppConfiguration(configBuilder =>
{
    configBuilder.AddInMemoryCollection(new Dictionary<string, string>
    {
        ["ConnectionStrings:TestDb"] = "connection string here"
    });
});

在您的情况下,内存配置效果最好。您还可以在此处添加用户机密等。

于 2022-02-15T07:18:45.383 回答