我正在尝试运行一些关于令牌管理 API 的集成测试。此外,该 API 还需要令牌发行者 API 也在运行中。
总的来说,我的集成测试需要同时运行 IdentityServer4 Web/API 和 Management API。但是当我创建两个 TestServer 实例时,它们似乎都以相同的 BaseAddress (http://localhost) 结束。
总的来说,我的集成测试需要同时运行 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是否在该端口上运行。
这两个似乎都没有影响。
myTestServer.CreateClient()
获取的HttpClient
来调用API。因此,测试服务器和(测试)客户端之间似乎存在连接。 - superjos