我在 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}");
}
}
}
至少在某些时候,HttpClient.BaseAddress 返回时带有尾部斜杠。 所以我首先要查看的是您的
client.BaseAddress + "/auction-hub"
,看看它是否确实符合预期。
组合地址时,Path.Combine()是一个非常可靠的工具。