我们使用Chutzpah测试适配器在Visual Studio中运行一些QUnit javascript测试。一切正常,直到我们最近更改了我们的api(由js文件测试的那个),并在UserAgent http标头上添加了一些验证。当我尝试更新测试以更改/模拟用户代理时,我意识到即使overriding the default browser property也无法直接实现。
经过几天的清理,我终于找到了究竟发生了什么。 Chutzpah正在为运行的测试文件创建一个phantomjs page对象。这是在位于Chutzpah adapter installation path的基本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支持通过在页面settings object中指定用户代理标头来更改用户代理标头。如果我在我的机器上编辑这个chutzpahRunner.js文件,并在那里手动设置用户代理,如下所示:
page.settings.userAgent = "MyCustomUserAgent";
我的测试再次开始工作。问题是这不在项目本身,因此不能与团队的其他成员共享。
是否可以更改Chutzpah创建的phantomjs对象的属性来运行测试?我想要从我自己的测试中更改它们,或者从我可以嵌入管道的另一个脚本文件中更改它们。
答案 0 :(得分:1)
如果Chutzpah中没有代码更改,则无法在PhantomJS对象上设置这些属性。请在https://github.com/mmanela/chutzpah提出问题,要求提供此功能,然后分叉/修补Chutzpah添加它(或等待项目开发人员希望这样做)。
<强>更新强> 我推了fix for this issue。一旦发布,您可以在Chutzpah.json文件中使用以下内容:
{
"userAgent": "myUserAgent"
}