IHubClients 和 IHubCallerClients 隐藏成员
添加对客户端结果的支持,IHubClients 和 IHubCallerClients 现在使用 ISingleClientProxy Client(string connectionId);
和 ISingleClientProxy Caller { get; }
隐藏接口成员 IClientProxy Client(string connectionId);
和 IClientProxy Caller { get; }
。
除非使用反射调用受影响的 Client
或 Caller
方法,否则这不是生产代码的中断性变更。 可能需要更新单元测试 SignalR 中心。
引入的版本
ASP.NET Core 7.0
旧行为
使用 Moq 等测试库对 SignalR 中心进行单元测试时,可以编写如下代码:
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
接口。