Udostępnij za pośrednictwem


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.

Zaktualizuj kod testowy, aby używać interfejsu podczas korzystania z kodu opartego ISingleClientProxy na odbiciu lub odbiciu.

Dotyczy interfejsów API