我部分嘲笑有这两种方法的类:
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]中,我有这些调用:
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();
我在这行上或之后调用方法时没有问题广播调用(他们没有按预期做任何事情)但奇怪的是我的第三行抛出了一个错误:
System.ArgumentException : Argument cannot be null or empty Parameter name: connectionId