IHubClients 和 IHubCallerClients 隱藏成員
若要新增對用戶端結果的支援,IHubClients 和 IHubCallerClients 現在會隱藏介面成員 IClientProxy Client(string connectionId);
和 IClientProxy Caller { get; }
及 ISingleClientProxy Client(string connectionId);
和 ISingleClientProxy Caller { get; }
。
除非您使用反映來呼叫受影響的 Client
或 Caller
方法,否則這不是生產程式碼的中斷性變更。 您可能需要更新單元測試 SignalR 中樞。
導入的版本
ASP.NET Core 7.0
先前的行為
使用 Moq 之類的測試程式庫來單元測試 SignalR Hub 時,您可以撰寫類似以下的程式碼:
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 { }
新的行為
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 { }
中斷性變更的類型
這項變更會影響來源相容性。
變更原因
已進行變更,以將新功能新增至 SignalR。 這在一般使用案例中並非重大變更,不過,可能會中斷可輕易更新的測試程式碼。
建議的動作
使用反映或反映型程式碼時,更新測試程式碼以使用 ISingleClientProxy
介面。