Должен ли я беспокоиться об исключении отладки в тесте интеграции signalR? - PullRequest
0 голосов
/ 19 декабря 2018

Исключение выводится в окне отладки, что-то вроде этого:

vstest.executionengine.x86.exe Ошибка: 0: Ошибка при закрытии веб-сокета: System.Net.WebSockets.WebSocketException (0x80004005):Произошла внутренняя ошибка WebSocket.Пожалуйста, смотрите innerException, если присутствует, для более подробной информации.---> System.cancellationToken)

Есть еще, я их просто вырезал.

Я пытаюсь написать интеграционный тест для моего сервера и клиента SignalR.

Вот 2 простых тестовых случая:

        [TestMethod]
        public void It_Should_Allow_Register()
        {
            using (var server = WebApp.Start<Startup>("http://+:61744"))
            {
                var client = GetConnectedClient();
                Assert.IsTrue(client.IsConnected);
                DisposeClients(client);
            }
        }

        [TestMethod]
        public void It_Should_Allow_MultipleClients()
        {
            using (var server = WebApp.Start<Startup>("http://+:61744"))
            {
                var client1 = GetConnectedClient();
                Assert.IsTrue(client1.IsConnected);

                var client2 = GetConnectedClient();
                Assert.IsTrue(client2.IsConnected);

                DisposeClients(client1, client2);
            }
        }

У меня есть другие тестовые случаи, но идея в том, что каждый тест вызовет автономный сервер Owin в памяти и создастодин или несколько клиентов подключаются к нему, а затем безопасно отключают всех клиентов после выполнения бизнес-логики.

К сожалению, если я запускаю по одному тесту за раз, он работает нормально.Но если я запускаю их все вместе, то выводится эта надоедливая исключительная ситуация WebSocketException.

Похоже, что контрольный пример выполнен нормально.Я распечатываю запрос и ответ (при вызове функции сервера SignalR) в отладке.Все нормально исключение, исключение в трассировке отладки.

Я нашел это сообщение: Исключение SignalR Websocket при закрытии клиента

, поэтому без причины я добавил

Connection.Stop(TimeSpan.FromSeconds(3000)); 

Соединение является HubConnection.

Это все то же самое.

Честно говоря, неужели мне все равно, уверен ли я, что вся бизнес-логика в моих тестах выполнена?

...