如何设置Moq,以便在SignalR中添加多个组和客户端时进行单元测试?

如何设置Moq,以便在SignalR中添加多个组和客户端时进行单元测试?,signalr,moq,signalr-hub,signalr.client,Signalr,Moq,Signalr Hub,Signalr.client,我一直在使用Moq开发一个信号器单元测试框架。 我已经能够很好地处理1组1客户端(连接)场景 如何设置最低起订量,以便: 1) 是否从同一组中添加/删除多个客户端 2) 在同一模拟中心上添加/删除多个组 我对Moq和信号机组合的世界还比较陌生 提前感谢,, JohnB下面是一个使用Moq和xUnit.net将客户端添加到多个组的示例测试: [事实] 公共异步任务MyHubAddsConnectionToTheCorrectGroups() { //安排 var groupManagerMock=

我一直在使用Moq开发一个信号器单元测试框架。 我已经能够很好地处理1组1客户端(连接)场景

如何设置最低起订量,以便:

1) 是否从同一组中添加/删除多个客户端

2) 在同一模拟中心上添加/删除多个组

我对Moq和信号机组合的世界还比较陌生

提前感谢,,
JohnB

下面是一个使用Moq和xUnit.net将客户端添加到多个组的示例测试:

[事实]
公共异步任务MyHubAddsConnectionToTheCorrectGroups()
{
//安排
var groupManagerMock=new Mock();
var connectionId=Guid.NewGuid().ToString();
var groupsJoined=新列表();
groupManagerMock.Setup(g=>g.Add(connectionId,It.IsAny())
.Returns(Task.FromResult(null))
.Callback((cid,groupToJoin)=>
groupsJoined.Add(groupToJoin));
var myHub=新的myHub();
myHub.Groups=groupManagerMock.Object;
myHub.Context=new-HubCallerContext(请求:null,
connectionId:connectionId);
//表演
等待myHub.AddToGroups();
//断言
groupManagerMock.VerifyAll();
Assert.Equal(3,groupsJoined.Count);
Assert.Contains(“group1”,groupsJoined);
Assert.Contains(“group2”,groupsJoined);
Assert.Contains(“group3”,groupsJoined);
}
公共类MyHub:Hub
{
公共异步任务AddToGroups()
{
等待组。添加(Context.ConnectionId,“group1”);
等待组。添加(Context.ConnectionId,“group2”);
等待组。添加(Context.ConnectionId,“group3”);
}
}
基本思想是定义一个
回调
以及
设置
,该设置将对测试重要的参数存储在集合中。然后,您可以使用集合验证您模拟的方法是否使用正确的参数调用了正确的次数。我不验证对
组的调用顺序。在我的示例测试中添加
,但您也可以测试它

此模式非常简单地扩展到测试多个客户端的添加/删除。基本上,您只需要第二个集合来存储传递给
组的
connectionId
参数。添加