У меня очень старое и плохо написанное приложение Rails. Есть около 9000 строк кода и ноль тестов. Большая часть кода находится в контроллерах, и, что еще хуже, существует множество вызовов внешних API, системных вызовов случайных сценариев и т. Д.
Также нет среды разработки, все настроено для работы с производственными базами данных. Ну, это не одна база данных, существует около 10 различных баз данных, поскольку приложение является своего рода административным сервером для более крупного сайта.
Моя первая идея заключалась в том, чтобы получить хотя бы приличное тестовое покрытие тех частей, над которыми я собираюсь работать, но я не могу заставить это работать где-нибудь еще, кроме как на производственных серверах.
Также есть множество старых гемов и устаревших предупреждений, но я даже не могу думать об обновлении гемов, пока не пройдут тесты. Переписывать все целиком - не вариант, и мне скоро придется что-то добавить / изменить.
Я не совсем уверен, как подойти к тестированию такого приложения, потому что есть очень много вещей, которые могут пойти не так. Что я действительно хотел бы сделать, так это написать несколько интеграционных тестов, а затем начать рефакторинг, но я не могу этого сделать в производственной среде.
Написание модульных тестов с кучей заглушек и имитаций не кажется таким полезным, поскольку код, над которым я собираюсь работать, в основном приходится переписывать с нуля.
Какие шаги я могу предпринять, чтобы практически скопировать огромную сложную производственную среду на мою машину разработки, чтобы я мог делать что-то изолированно?
править: Маленький забавный факт о приложении. Когда я попытался запустить его в первый раз, он продолжал зависать без каких-либо сообщений об ошибках ... примерно через полчаса я обнаружил, что тайм-аут для подключения к базе данных (которая была недоступна) была установлена на 90 минут !