调用实现Hub <t>的Signalr Hub进行单元测试

时间:2019-04-05 14:38:49

标签: asp.net-core signalr-hub nunit-3.0 asp.net-core-signalr

我的问题是关于在一个单元测试项目中调用一个集线器,该集线器使用类型参数Hub来实现集线器,该集线器将模拟客户端调用等。我的一个集线器如下所示。

namespace Hubs {
    private readonly ILogger<CarHub> _logger;
    public class CarHub : Hub<ICar> {
        public CarHub(ILogger<CarHub> logger) {
            _logger = logger;
        }
        public async Task SendForCarName(string carBrand) {
            await Clients.All.GetCarName(carBrand.Equals("Toyota") ? "Camry" 
                                                                  :"Accord);
        }
    }
} 

到目前为止,我的单元测试尝试看起来像这样:

public class Tests
{
    [Test]
    public void Test1()
    {
        Mock<IHubCallerClients<ICar>> mockClients = new Mock<IHubCallerClients<ICar>>();
        Mock<IClientProxy> mockClientProxy = new Mock<IClientProxy>();
        mockClients.Setup(clients => 
                          clients.All).Returns(mockClientProxy.Object);
        CarHub carHub = new CarHub(new Mock<ILogger<CarHub>> 
         ().Object) {
            Clients = mockClients.Object
        };

        Assert.Pass();
    }
}

现在的问题是

1)使用Mock IHubCaller ICar是否正确使用/调用?还是应该将其更改为IHubCaller Car?

2)mockClients.Setup(clients => clients.All).Returns(mockClientProxy.Object)显示错误“无法解析方法Return(...... SignalR.ClientProxy)候选者是Return(Interfaces.ICar ),退货(Systems.Delegate),退货(System.Func ICar)。我做错了什么?

0 个答案:

没有答案