问题描述
我有一个控制器,其中有一个 IHubContext<T>
对象注入到构造函数中。我想对在组中添加和删除 connectionId
进行单元测试。我在问我怎么能做到这一点?
我试过这个:
public interface IMyHubContext :IHubContext<MyHub>
{
Task AddToGroupAsync(string connectionId,string groupName,CancellationToken cancellationToken = default);
Task RemoveFromGroupAsync(string connectionId,CancellationToken cancellationToken = default);
}
var cs = new CancellationTokenSource();
var ct = cs.Token;
Mock<IMyHubContext> hubMoq = new Mock<IMyHubContext>();
hubMoq.Setup(a => a.RemoveFromGroupAsync("123",$"{groupName}",ct)).Returns(null);
但这会产生编译时错误。
解决方法
编译时错误可能是由于将 null
传递给 Returns
而产生的。由于 RemoveFromGroupAsync
返回类型是 Task
,我认为您需要按如下方式设置此调用:
hubMoq.Setup(a => a.RemoveFromGroupAsync("123",$"{groupName}",ct))
.Returns(Task.CompletedTask);