我部分嘲笑有这两种方法的类:
public void EmitTo(string connectionId,ChatMessage message) { Clients.Client(connectionId).broadcastMessage(message.User.UserName,message.Message); } public virtual void Broadcast(ChatMessage message) { Clients.All.broadcastMessage(message.User.UserName,message.Message); }
在我的测试[SetUp]中,我有这些调用:@H_404_5@
hub = Substitute.ForPartsOf<ChatHub>(myMockedClient,context,groupManager); hub.When(x => x.Broadcast(Arg.Any<ChatMessage>())).DoNotCallBase(); hub.When(x => x.EmitTo(Arg.Any<string>(),Arg.Any<ChatMessage>())).DoNotCallBase();
我在这行上或之后调用方法时没有问题广播调用(他们没有按预期做任何事情)但奇怪的是我的第三行抛出了一个错误:@H_404_5@
System.ArgumentException : Argument cannot be null or empty Parameter name: connectionId@H_404_5@
我有点迷失,因为我对两种方法做了完全相同的事情并得到了不同的行为,为什么我的when方法调用EmitTo?@H_404_5@