dns - Behat + Mink 无法使用代理(DNS 无法解析域名)

标签 dns proxy bdd behat mink

我有一个简单的Behat使用 Mink 测试 webapp 的功能,例如 http://myapp.localhost (我的 中有一条类似 127.0.0.1 myapp.localhost 的记录主机 文件)。

问题是,当我运行该功能时,Mink 驱动程序在浏览到应用程序中的任何 URL 时获得的所有内容(例如使用 当我转到“/some/url” 步骤时)是来自代理服务器的错误页面,指出无法解析域 myapp.localhost。代理服务器地址由env设置。变量:导出 http_proxy=...

外部网站运行良好(例如 Behat 文档中的 example with Wikipedia)。

我的浏览器可以访问该应用程序,因为有一个设置告诉浏览器在域为 *.localhost 时不要使用代理。

如何强制Mink忽略代理?

今天花了一个小时来确定问题。

最佳答案

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

关于dns - Behat + Mink 无法使用代理(DNS 无法解析域名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517583/

相关文章:

docker - minikube 0.30.0 DNS在带有Docker 18.06.1-ce和vm-driver = none的CentOS 7上不起作用

apache - 基于 URL 中参数的代理

node.js - 如何通过 NodeJS 中的 SOCKS5 代理发送 UDP 数据包?

bdd - 有没有人使用 SpecFlow/StoryQ 用 CQRS 完成 BDD

dns - 为什么所有 *.dev 域都指向我的本地主机?

azure - 我可以在多个 AKS 群集中使用我的 Azure DNS 区域吗

user-interface - 对象编辑和 isDirty() 标志

eclipse - Eclipse 的 Maven 插件,代理问题

ruby-on-rails - cucumber 在运行单个功能时找不到步骤

integration-testing - 如何删除 SpecFlow 中的种子数据