如何为SignalR编写集成测试

问题描述 投票:0回答:1

我在 Web API 中使用 Signalr。如何对其进行集成测试?我不想模拟集线器,我想处理连接的真实实例并检查结果。

目前我有这样的东西。我无法与我的集线器建立连接

[Fact]
 public async Task Should_CreateUser()
 {
     using var client = new WebApplicationFactory<Program>().CreateClient();

     var handler = new HttpClientHandler();
     handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
     var connection = new HubConnectionBuilder()
         .WithUrl(client.BaseAddress + "/auction-hub", options =>
         {
             options.HttpMessageHandlerFactory = _ => handler;
         })
         .Build();

     await connection.StartAsync();

 }

中心:

namespace Bidnest.Application.Hubs
{
    public class AuctionHub : Hub<IAuctionHub>
    {

        public override async Task OnConnectedAsync()
        {
            await Clients.All.UserWasOutbid($"Hey {Context.UserIdentifier}");
        }
    }
}
c# .net signalr xunit
1个回答
0
投票

至少在某些时候,HttpClient.BaseAddress 返回时带有尾部斜杠。 所以我首先要查看的是您的

client.BaseAddress + "/auction-hub"
,看看它是否确实符合预期。

组合地址时,Path.Combine()是一个非常可靠的工具。

© www.soinside.com 2019 - 2024. All rights reserved.