我正在编写一个过程,用于代理两个相同 API 之间的数据传输(FWIW,一个是在不同容器中运行的本地 API,另一个是在云中(。
我想编写一些测试代码来确保数据传输代码发挥应有的作用。到目前为止,我一直在使用TestServer
进行 API 测试,但现在当我想运行两台服务器时,事情可能会变得有点复杂。出现了几个问题:
- 如何让他们使用不同的
appsettings.json
文件?现在,只需一个TestServer
,它正在使用测试项目的appsettings.json
。如何配置TestServer
以使用不同的配置文件? - 一旦我启动并运行了两个
TestServers
,它们是否作为完全独立的实体运行?特别是,如果我有任何static
值,它们的值会在两个环境之间共享,还是像在现实生活中一样独立运行?
- 这在一定程度上取决于您如何创建测试服务器。
- 如果您使用的是
TestServer
的构造函数(它将IWebHostBuilder
作为输入(,则可以使用 Web 主机构建器的ConfigureAppConfiguration
方法来设置所需的任何配置源。如果您不更改任何内容,Appsettings.json 是默认的配置源,但使用不同的IWebHostBuilder
创建两个单独的TestServer
应该很容易,每个都有自己的ConfigureAppConfiguration
调用。 - 如果使用
WebApplicationFactory
方法,则可以创建自定义WebApplicationFactory
并在该类型的ConfigureWebHost
方法中设置配置源。
- 如果您使用的是
- 由于它们在同一个进程/应用程序域中运行,因此两个测试服务器将是单独的实例,但共享静态。如果这不可取,您可以考虑在进程外的服务器上作为"真正的"服务器(而不是测试服务器(运行,或者更好的是,避免使用静态 !
我们在这里需要更多信息...你是如何注册你的appsettings.json的?您使用的是 DI 吗?
a( 为您的环境(服务器/云(转换您的配置如何在 .NET Core MVC 项目中转换 appsettings.json?
b( 创建第二个应用程序设置并在应用程序配置中进行更改。https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2