0

我们使用 Chutzpah 测试适配器在 Visual Studio 中运行了一些 QUnit javascript 测试。一切正常,直到我们最近更改了我们的 api(由 js 文件测试的那个),并在 UserAgent http 标头上添加了一些验证。当我尝试更新测试以更改/模拟用户代理时,我意识到即使通过覆盖默认浏览器属性也无法直接实现。

经过几天的清理,我终于找到了到底发生了什么。Chutzpah 正在为要运行的测试文件创建一个phantomjs 页面对象。这是在位于Chutzpah 适配器安装路径的基本 javascript 文件 (chutzpahRunner.js) 上完成的。这些是文件的最后几行,有效地启动了测试:

...
// Allows local files to make ajax calls to remote urls
page.settings.localToRemoteUrlAccessEnabled = true; //(default false) 

// Stops all security (for example you can access content in other domain IFrames)
page.settings.webSecurityEnabled = false; //(default true)

page.open(testFile, pageOpenHandler);
...

Phatomjs 支持通过在页面设置对象中指定来更改用户代理标头。如果我在我的机器上编辑这个 chutzpahRunner.js 文件,并在那里手动设置用户代理,如下所示:

page.settings.userAgent = "MyCustomUserAgent";

我的测试又开始工作了。问题是这不在项目本身中,因此无法与团队的其他成员共享。

是否可以更改 Chutzpah 创建的 phantomjs 对象的属性来运行测试?我想从我自己的测试中更改它们,或者从我可以嵌入到管道中的另一个脚本文件中更改它们。

4

1 回答 1

1

如果没有在 Chutzpah 中更改代码,就无法在 PhantomJS 对象上设置这些属性。请在https://github.com/mmanela/chutzpah提出问题,要求提供此功能,然后 fork/patch Chutzpah 以添加它(或等待项目中的开发人员希望得到此功能)。

更新: 我为这个问题推送了一个修复程序。发布后,您可以在 Chutzpah.json 文件中使用以下内容:

{
  "userAgent": "myUserAgent"
}
于 2014-10-20T22:46:45.457 回答