Возможен ли или целесообразен ли взлом DNS для модульного тестирования кода с HTTP-соединениями?

Возможен ли или целесообразен ли взлом DNS для модульного тестирования кода с HTTP-соединениями?

Существует ли разумный способ взлома DNS с целью имитации исходящих HTTP-соединений с помощью локального тестового сервера?

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

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

решение1

Не трогать код для проверки — это разумно. Так что вы правы, манипулируя средой, чтобы заставить использовать тестовый сервер.

Взлом DNS может повлиять на всю сеть, что может вызвать раздражение других тестов, нацеленных на тот же сервис.

Чтобы минимизировать влияние, самым простым способом перенаправить сетевой трафик на тестовый сервер будет настройка hostsфайлау клиентагде установлено тестируемое программное обеспечение.

# Linux:
/etc/hosts

# Windows:
%SystemRoot%\System32\drivers\etc\hosts

Просто сопоставьте IP-адрес тестовой системы с DNS-именами рабочих серверов:

# IP of the test server:
192.168.10.20   prod.server.com prod2.server.com
192.168.10.20   prod prod2      # if prod-servers are part of the local network.

Для разрешения имени сервера система сначала проверит hostsфайл. Затем, если не удалось, последует DNS-запрос.

После перенастройки может быть полезно очистить кэш DNS:

# Linux:
resolvectl flush-caches

# Windows:
ipconfig /flushdns

Для этого (или любого другого решения DNS) вы должны быть уверены, что программное обеспечение нигде не кодирует IP-адрес рабочего сервера. (Возможно, отключить тестовую сеть от Интернета / рабочей сети?)

Связанный контент