IHubClients i IHubCallerClients ukrywają elementy członkowskie
Aby dodać obsługę wyników klienta, IHubClients a IHubCallerClients teraz ukryj elementy członkowskie IClientProxy Client(string connectionId);
interfejsu i za pomocą ISingleClientProxy Client(string connectionId);
elementów IClientProxy Caller { get; }
i ISingleClientProxy Caller { get; }
.
Nie jest to zmiana powodująca niezgodność w kodzie produkcyjnym, chyba że używasz odbicia w celu wywołania objętej metody Client
lub Caller
metody. Może być konieczne zaktualizowanie koncentratorów SignalR Hubs testowania jednostkowego.
Wprowadzona wersja
ASP.NET Core 7.0
Poprzednie zachowanie
W przypadku korzystania z biblioteki testowej, takiej jak Moq do testowania jednostkowego usługi SignalR Hub, można napisać kod podobny do następującego:
var hub = new MyHub();
var mockCaller = new Mock<IHubCallerClients>();
var mockClientProxy = new Mock<IClientProxy>();
mockCaller.Setup(x => x.Caller).Returns(mockClientProxy.Object);
hub.Clients = mockCaller.Object;
class MyHub : Hub { }
Nowe zachowanie
var hub = new MyHub();
var mockCaller = new Mock<IHubCallerClients>();
var mockClientProxy = new Mock<ISingleClientProxy>(); // <-- updated code
mockCaller.Setup(x => x.Caller).Returns(mockClientProxy.Object);
hub.Clients = mockCaller.Object;
class MyHub : Hub { }
Typ zmiany powodującej niezgodność
Ta zmiana ma wpływ na zgodność ze źródłem.
Przyczyna wprowadzenia zmiany
Wprowadzono zmianę w celu dodania nowych funkcji do usługi SignalR. Nie jest to jednak przerywane w normalnych przypadkach użycia, jednak może to spowodować przerwanie kodu testowego, który jest łatwo aktualizowany.
Zalecana akcja
Zaktualizuj kod testowy, aby używać interfejsu podczas korzystania z kodu opartego ISingleClientProxy
na odbiciu lub odbiciu.