【发布时间】:2017-11-02 18:05:15
【问题描述】:
我正在尝试为令牌管理 API 运行一些集成测试。该 API 还需要运行令牌颁发者 API。
总之,我的集成测试需要同时运行 IdentityServer4 Web/API 和 Management API。当我创建TestServer 的两个实例时,似乎它们都以相同的BaseAddress (http://localhost) 结束。
private readonly TestServer _identityTestServer;
private readonly TestServer _mgmtTestServer;
private readonly AppMgmtConfig _config;
private readonly AdminClient _adminClient;
private const string _certificatePassword = "test";
public AdminClientTests() : base(nameof(AdminClientTests))
{
var connectionString = GetConnectionString();
var dbSettings = new DbSettings(connectionString);
Environment.SetEnvironmentVariable("IdentityServer4ConnString",
dbSettings.IdentityServerConnectionString);
Environment.SetEnvironmentVariable("CertificatePassword", _certificatePassword);
_identityTestServer = new TestServer(new WebHostBuilder()
.UseStartup<USBIdentityServer.Startup>()
.UseEnvironment("IntegrationTest"));
USBIdentityServer.Program.InitializeDatabase(_identityTestServer.Host);
_mgmtTestServer = new TestServer(new WebHostBuilder()
.UseStartup<IdentityServer4.Management.Startup>()
.UseEnvironment("IntegrationTest"));
_config = GetConfig();
_adminClient = new AdminClient(_config);
}
注意: 我已经尝试过的事情:
- 添加
.UseUrls("http://localhost:5001")以查看 TestServer 是否会在该端口上运行。 - 添加
serverName.BaseAddress = new Uri("http://localhost:5001");以查看 TestServer 是否会在该端口上运行。
这些似乎都不会影响它。
【问题讨论】:
-
你有没有找到任何关于这方面的信息我实际上遇到了一个非常相似的问题stackoverflow.com/questions/47812182/…
-
很遗憾我没有
-
您如何与这些测试服务器交互?在我只使用一台服务器的集成测试中,我正在使用从
myTestServer.CreateClient()获得的HttpClient执行我的 API。所以看起来测试服务器和(测试)客户端之间有一个连接 -
我也有同样的问题
-
我有同样的问题,你的建议 .UseUrls("localhost:5001") 和 Add serverName.BaseAddress = new Uri("localhost:5001")worked 对我来说,但是我使用的是 .NET Core 3.0 所以也许问题已解决。
标签: c# asp.net-core integration-testing