using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.DependencyInjection; namespace ExampleSignalR.Test.Tests; public class HubTest : BaseIntegrationTest { private const string url = $"wss://localhost/chatHub"; private readonly WebAppFactoryFixture _factory; public HubTest(WebAppFactoryFixture factory) : base(factory) { _factory = factory; } [Fact] public async Task ConnectToSignalRHub() { var hubConnection = await CreateHubConnection(); } [Fact] public async Task SignalRHubResponsibility() { var hubConnection = await CreateHubConnection(); bool success = false; hubConnection.On("ReceiveMessage", (user, message) => { using var scope = _factory.Services.CreateScope(); var messageService = scope.ServiceProvider.GetRequiredService(); var testMessage = messageService.GetMessage(); if (message == testMessage) { success = true; } }); await hubConnection.InvokeAsync("SendMessage", nameof(HubTest), "test"); await Task.Delay(10000); if (!success) { throw new Exception(); } } private async Task CreateHubConnection() { var server = _factory.Server; var hubConnection = new HubConnectionBuilder() .WithUrl(url, options => { options.HttpMessageHandlerFactory = _ => server.CreateHandler(); }) .Build(); await hubConnection.StartAsync(); return hubConnection; } }