Behat + Mink不能与代理一起使用(DNS无法解析域名)

时间:2012-11-22 17:29:07

标签: dns proxy bdd behat mink

我有一个简单的Behat功能,使用Mink测试webapp,该域名是http://myapp.localhost(我的127.0.0.1 myapp.localhost文件中有hosts的记录。

问题是,当我运行该功能时,Mink驱动程序在浏览到应用程序中的任何URL时所获得的所有内容(例如,使用When I go to "/some/url"步骤)是来自代理服务器的错误页面,称该域{ {1}}无法解决。代理服务器地址由env设置。变量:myapp.localhost

外部网站工作得很好(比如Behat文档中的example with Wikipedia)。

我的浏览器可以访问该应用,因为有一个设置告诉浏览器在域export http_proxy=...时不使用代理。

如何强制Mink忽略代理?

今天花了一个小时来解决这个问题。

1 个答案:

答案 0 :(得分:2)

我使用的解决方案不是很优雅,但这是我能想到的最简单的方法。我有一些用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