Шаблоны для интеграционных тестов asyn c с SignalR и nUnit - PullRequest
0 голосов
/ 27 февраля 2020

Прошло много времени с тех пор, как я работал с nUnit и искал способы проведения интеграционных тестов с SignalR. В mocha у нас есть обратный вызов done(), который может быть выполнен, чтобы отметить, что тест должен закончиться.

К сожалению, там, кажется, нет эквивалента в nUnit и мы пытаемся найти способ завершить тестирование только при получении сообщения от концентратора, как показано ниже:

[Test]
public async Task Can_Register_As_A_Player () {
    connection = new HubConnectionBuilder ()
        .WithUrl ("https://localhost:5001/gameHub")
        .AddMessagePackProtocol ()
        .Build ();

    connection.On<RegisterResponseDTO> (EventName.Register, registerResponseDTO => {
        Assert.Multiple (() => {
            Assert.IsInstanceOf<DateTime> (registerResponseDTO.ID);
            Assert.IsInstanceOf<DateTimeOffset> (registerResponseDTO.Created);
            Assert.IsInstanceOf<DateTimeOffset> (registerResponseDTO.Updated);
            Assert.IsInstanceOf<string> (registerResponseDTO.GameCenterID);
        });

        // only end now
    });

    await connection.StartAsync ();

    var registerDTO = new RegisterDTO ();
    registerDTO.Name = "Samuel Goldenbaum";
    registerDTO.GameCenterID = Guid.NewGuid ().ToString ();
    registerDTO.PlayerDevice = new PlayerDevice {
        DeviceUniqueIdentifier = Guid.NewGuid ().ToString (),
        DeviceType = "Desktop",
        DeviceName = "Samuel’s MacBook Pro",
        DeviceModel = "MacBookPro14,3"
    };

    await connection.InvokeAsync<RegisterDTO> (EventName.Register, registerDTO);
    // don't end now, wait till connection.On<RegisterResponseDTO> above
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...