Behat + Mink не работают с прокси (DNS не может разрешить доменное имя)

У меня есть простая функция Behat, которая использует Mink для тестирования веб-приложения, домен которого, скажем, http://myapp.localhost (у меня есть запись типа 127.0.0.1 myapp.localhost в мой hosts файл).

Проблема в том, что когда я запускаю эту функцию, все, что получает драйвер Mink при переходе по любому URL-адресу в приложении (например, с шагом When I go to "/some/url"), — это страница с ошибкой от прокси-сервера, в которой говорится, что домен myapp.localhost не может быть разрешен. Адрес прокси-сервера задается env. переменная: export http_proxy=....

Внешние веб-сайты работают нормально (например, пример с Википедией из документов Behat).

Мой браузер может получить доступ к приложению, потому что есть настройка, запрещающая браузеру использовать прокси, когда домен *.localhost.

Как заставить Mink игнорировать прокси?

Сегодня потратил час, чтобы решить проблему.


person scriptin    schedule 22.11.2012    source источник


Ответы (1)


Решение, которое я использую, не очень элегантное, но это самый простой способ, который я могу придумать. У меня есть какой-то инструмент сборки, написанный на Bash, который имеет следующую функцию для вызова Behat:

function run_behat {
  local http_proxy_backup=$http_proxy
  export http_proxy=;

  bin/behat $@ # passing all args to behat
  # if you use phar version of behat, it will be like `php behat.phar $@`

  export http_proxy=$http_proxy_backup
}

По сути, я просто временно устанавливаю http_proxy в пустое значение, вызываю behat, а затем восстанавливаю http_proxy исходное значение.

Он вызывается из моего скрипта следующим образом:

if [ $1 == "behat" ]; then 
  run_behat ${*:2}; # pass all args but 1st
fi
person scriptin    schedule 22.11.2012