我的问题是关于在一个单元测试项目中调用一个集线器,该集线器使用类型参数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)。我做错了什么?