Вызов Signalr Hub, который реализует Hub <T>для модульного тестирования - PullRequest
0 голосов
/ 05 апреля 2019

Мой вопрос касается вызова концентратора, который реализует Концентратор с параметром типа, Концентратором, в проекте модульного тестирования, который будет имитировать вызовы Клиента и т. Д. Один из моих концентраторов выглядит следующим образом.

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) отображает ошибку «Не удается разрешить метод Returns (...... SignalR.ClientProxy) кандидатами являются Returns (Interfaces.ICar ), Возвращает (Systems.Delegate), возвращает (System.Func ICar). Что я делаю неправильно?

...