我们使用 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 对象的属性来运行测试?我想从我自己的测试中更改它们,或者从我可以嵌入到管道中的另一个脚本文件中更改它们。