Я создал приложение, которое может подключаться к другим его экземплярам в Интернете и обмениваться с ними некоторой информацией. Прежде чем выпускать какие-либо обновления для моего приложения, я должен быть уверен, что приложения могут правильно устанавливать соединение друг с другом.
Проблема в том, что, создавая экземпляр приложения, я просто запускаю «слушатель»который ждет входящих сетевых запросов. 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
завершат обмен информацией в своих собственных потоках. Есть ли другие способы, которыми я мог бы протестировать интеграцию такого кода?