Приложение My Rails использует гем net sftp для подключения к стороннему серверу и получения файлов с него. Проблема в том, что они заблокируют соединение, если мы попытаемся подключиться слишком много раз подряд. Наш код извлекает файл один раз в день в 4:00, поэтому обычно это не проблема.
Но у нас есть код для проверки правильности синтаксического анализа полученных файлов, и когда мы запускаем наши тесты слишком много раз подряд, SFTP-сервер блокирует нас, поэтому другой разработчик в нашей команде не может работать с другой функцией который должен соединиться с сервером SFTP больше. Обычно мы отключаем SFTP-запрос, но недавно обнаружили, что кто-то забыл добавить заглушку в одном из тестов, поэтому мы всегда получаем отказ в соединении в течение последних нескольких дней, потому что другой из нас пытается исправить некоторые тесты и они запускают наборы тестов несколько раз подряд.
Наша заглушка выглядит так:
sftp_start = mock
empty_extract = file_fixture("fixture_csv.csv").read
sftp_start.stubs(:download!).returns(empty_extract)
Net::SFTP.stubs(:start).yields(sftp_start)
Итак, вопрос в том, есть ли способ блокировать SFTP-соединения в тестовой среде, поэтому, если кто-то забудет добавить заглушку, мы получим ошибку? Я знаю, что webmock может блокировать внешние запросы, но, похоже, он не перехватывает запросы SFTP. Я немного погуглил, но не нашел ничего, связанного с этой проблемой, поэтому любые предложения были бы хорошими! Мы используем minitest для запуска наших тестов.