我正在编写一个进程,在两个相同的 API 之间代理数据传输(FWIW,一个是在不同容器中运行的本地 API,另一个在云中)。
我想编写一些测试代码以确保数据传输代码执行应有的操作。到目前为止,我一直在使用 TestServer
用于 API 测试,但现在当我想运行两台服务器时,事情可能会变得有点复杂。出现了几个问题:
- 如何让他们使用不同的
appsettings.json
文件?现在,只有一个TestServer
,它正在使用测试项目的appsettings.json
。如何配置TestServer
以使用不同的配置文件? - 一旦我有两个
TestServers
启动并运行,它们是否作为完全独立的实体运行?最特别的是,如果我有任何static
值,它们的值会在两个环境之间共享,还是它们可以像在现实生活中那样独立运行?
最佳答案
- 这在一定程度上取决于您创建测试服务器的方式。
- 如果您使用
TestServer
的构造函数(以IWebHostBuilder
作为输入),您可以使用 Web 主机构建器的ConfigureAppConfiguration
方法来设置你想要的任何配置源。如果您不做任何更改,Appsettings.json 是默认的配置源,但是使用不同的IWebHostBuilder
创建两个单独的TestServer
应该很容易,每个都有自己的ConfigureAppConfiguration
调用。 - 如果您使用的是
WebApplicationFactory
approach , 你可以创建一个 customWebApplicationFactory
并在该类型的ConfigureWebHost
方法中设置配置源。
- 如果您使用
- 由于它们在同一个进程/应用程序域中运行,因此两个 TestServer 将是独立的实例但共享静态信息。如果这不是您所希望的,您可以考虑在进程外的服务器上运行作为“真正的”服务器(而不是 TestServer),或者更好的是,避免使用静态!
关于c# - 我可以在一个环境中使用不同的配置运行两个 TestServers 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54654568/