Интеграционное тестирование поведения сети. Что утверждать, если два экземпляра работают в разных потоках? - PullRequest
0 голосов
/ 05 октября 2019

Я создал приложение, которое может подключаться к другим его экземплярам в Интернете и обмениваться с ними некоторой информацией. Прежде чем выпускать какие-либо обновления для моего приложения, я должен быть уверен, что приложения могут правильно устанавливать соединение друг с другом.

Проблема в том, что, создавая экземпляр приложения, я просто запускаю «слушатель»который ждет входящих сетевых запросов. TcpConnectionsManager выполняет некоторое «рукопожатие», отправляет некоторую информацию о себе, выполняет некоторые операции инициализации. Находясь в функции тестирования, я не контролирую то, что отправляется, и я не знаю, что исходит от моделируемой сети.

[Fact]
public async Task ConnectionCorrectlyEstablished()
{

    TcpConnectionsManager _hostA = new TcpConnectionsManager(_logger1);
    TcpConnectionsManager _hostB = new TcpConnectionsManager(_logger2);

    _hostA.SetupListener(13101);
    await _hostB.SetupConnectionAsync(IPAddress.Loopback, 13101);

    // what to assert here?
}

Таким образом, в этом случае я не получаю никакого "результата", который можно передать какому-либо методу "Assert", чтобы проверить его правильность. Я также не могу использовать блок try / catch для проверки ошибок, так как эта функция заканчивается до того, как _hostA и _hostB завершат обмен информацией в своих собственных потоках. Есть ли другие способы, которыми я мог бы протестировать интеграцию такого кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...