我们有几个.NET Core微服务/ API,我们希望进行一些集成测试。 因此,我们遵循了这些教程,除一种情况外,它都能正常工作。
想象一下,我有3个API,因此有3个“ TestServer”实例,每个实例都有自己的HttpClient来连接!
我展示了创建TestServer的方式:
private TestServer SetupAPI<TStartup>(string path,string uri) where TStartup : class
{
string rootPath = Path.Join(_rootPath,"path");
var hostBuilder = WebHost.CreateDefaultBuilder()
.UseUrls(uri)
.UseIISIntegration()
//.ConfigureServices(services => services.AddSecurityHeaders())
.UseContentRoot(rootPath)
.UseEnvironment("Development")
.ConfigureAppConfiguration(cb =>
{
cb.AddJsonFile("appsettings.json",optional: false)
//.AddJsonFile($"appsettings.{env.EnvironmentName}.json",optional: true)
.AddEnvironmentVariables();
})
.UseStartup<TStartup>();
TestServer server = new TestServer(hostBuilder);
server.BaseAddress = new Uri(uri);
return server;
}
我展示了如何创建HttpClient:
client = ArtistsServer.Createclient();
client.BaseAddress = new Uri("http://localhost:5000");
client.DefaultRequestHeaders.accept.Clear();
client.DefaultRequestHeaders.accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
它运行良好,但是当我尝试以这种方式创建新的HttpClient时,它失败了: HttpClient httpClient =新的HttpClient(); httpClient.BaseAddress = new Uri(“ http://localhost:5000”);
真正的问题是某些微服务以这种方式创建自己的HttpClient以便与其他API通信!它们是通过appsettings.json文件设置的,并尝试连接到普通的真实HTTP服务器,而不是“ TestServer”服务器!
您有解决此问题的想法吗?
谢谢