我可以在一个环境中运行两个测试服务器,使用不同的配置吗?



我正在编写一个过程,用于代理两个相同 API 之间的数据传输(FWIW,一个是在不同容器中运行的本地 API,另一个是在云中(。

我想编写一些测试代码来确保数据传输代码发挥应有的作用。到目前为止,我一直在使用TestServer进行 API 测试,但现在当我想运行两台服务器时,事情可能会变得有点复杂。出现了几个问题:

  1. 如何让他们使用不同的appsettings.json文件?现在,只需一个TestServer,它正在使用测试项目的appsettings.json。如何配置TestServer以使用不同的配置文件?
  2. 一旦我启动并运行了两个TestServers,它们是否作为完全独立的实体运行?特别是,如果我有任何static值,它们的值会在两个环境之间共享,还是像在现实生活中一样独立运行?
  1. 这在一定程度上取决于您如何创建测试服务器。
    1. 如果您使用的是 TestServer 的构造函数(它将IWebHostBuilder作为输入(,则可以使用 Web 主机构建器的 ConfigureAppConfiguration 方法来设置所需的任何配置源。如果您不更改任何内容,Appsettings.json 是默认的配置源,但使用不同的 IWebHostBuilder 创建两个单独的TestServer应该很容易,每个都有自己的ConfigureAppConfiguration调用。
    2. 如果使用WebApplicationFactory方法,则可以创建自定义WebApplicationFactory并在该类型的ConfigureWebHost方法中设置配置源。
  2. 由于它们在同一个进程/应用程序域中运行,因此两个测试服务器将是单独的实例,但共享静态。如果这不可取,您可以考虑在进程外的服务器上作为"真正的"服务器(而不是测试服务器(运行,或者更好的是,避免使用静态

我们在这里需要更多信息...你是如何注册你的appsettings.json的?您使用的是 DI 吗?

a( 为您的环境(服务器/云(转换您的配置如何在 .NET Core MVC 项目中转换 appsettings.json?

b( 创建第二个应用程序设置并在应用程序配置中进行更改。https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2

最新更新