首页 > 解决方案 > SignalR 的 AspNet 核心集成测试

问题描述

是否可以SignalR使用TestServer作为集成测试的一部分生成的测试(https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests view=aspnetcore-2.1)?

TestServer我所有的重试都未能与实例握手失败,并出现异常:System.Net.Sockets.SocketException : No connection could be made because the target machine actively refused it

运行Debug//Console完美IIS运行

服务器代码

 public void Configure(...)
 {
     ...
     app.UseSignalR(router => router.MapHub<MockHub>("/ws"));
     ...
}

测试代码

        ...
        var server = factory.Server;
        var connection = new HubConnectionBuilder()
              .WithUrl(server.BaseAddress)
              .Build();
        await connection.StartAsync();

标签: asp.net-coresignalrintegration-testing

解决方案


看起来TestServer需要您使用它HttpMessageHandler创建的,所以将您的代码更改为

.WithUrl(new Uri(server.BaseAddress, "ws"), o => { o.HttpMessageHandlerFactory = _ => server.CreateHandler(); })


推荐阅读