【发布时间】:2015-08-04 07:53:38
【问题描述】:
我正在部分模拟具有这两种方法的类:
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();
我对这一行或稍后调用该方法时的Broadcast 调用没有任何问题(它们没有按预期执行任何操作),但奇怪的是我的第三行抛出了一个错误:
System.ArgumentException : 参数不能为空或空参数名称:connectionId
我有点迷茫,因为我对两种方法都做了完全相同的事情并得到了不同的行为,为什么我的 when 方法调用EmitTo?
【问题讨论】:
标签: c# unit-testing mocking nunit nsubstitute