Имитация потери связи в тестах - PullRequest
0 голосов
/ 25 мая 2011

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

У меня есть несколько жестко закодированных адресов в определениях классов :( и я хотел бы проверить поведение сценария, когда адрес, например, недоступен.

Я могу изменить etc / hosts (я на win7), но я хотел бы деактивировать / изменить соединение более одного раза во время выполнения набора тестов. Кроме того, модифицировать его до и после каждого теста нецелесообразно.

Итак, мне нужно настроить прокси для php на windows, прокси-сервер, способный принимать команды от запущенного скрипта (для включения / выключения перенаправления) и иметь возможность иметь правила перенаправления на основе вызываемого URL.

Звучит как возможный плагин для Fiddler , но я не нашел ни одного :(

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Проблема в том, что здесь происходит множество вещей. Вы в основном хотите изменить настройки DNS во время работы приложения ...

Вам нужен собственный DNS-сервер Настройте Windows, чтобы посмотреть на DNS-сервер

Во время тестирования вы должны войти на DNS-сервер, изменить разрешение имени на нерабочий IP и сбросить ваш dns в windows (ipconfig /flushdns).

Или это, или вы не можете просто реализовать брандмауэр, который блокирует соединения с определенным адресом?

1 голос
/ 25 мая 2011

Вы хотите http://en.wikipedia.org/wiki/Mock_object для этого.Теперь все зависит от того, структурировано ли ваше приложение, чтобы увидеть, действительно ли вы можете использовать что-то вроде этого:)


Редактировать: если вы действительно не можете использовать фиктивные объекты, попробуйте использовать их снова :) Если вы все еще не можете,Я использовал это (скрипт bat) в прошлом, чтобы проверить, как программа реагирует на разрыв соединения.Я использовал ping для имитации sleep и devcon для управления сетевыми настройками.Это не покрывает все ваши потребности, но может дать отправную точку

:loop
    devcon disable *VEN_1969*
    ping -n 5 localhost
    devcon restart *VEN_1969*
    ping -n 5 localhost
    devcon enable *VEN_1969*
    ping -n 5 localhost
# rem goto loop
...