我们有一些使用Chutzpah测试适配器在Visual Studio中运行的QUnit javascript测试。一切工作正常,直到最近我们更改了api(一个由js文件测试的api),并在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对象的属性以运行测试?我想从我自己的测试中更改它们,或者从我可以嵌入到管道中的另一个脚本文件中更改它们。

最佳答案

如果不更改Chutzpah中的代码,则无法在PhantomJS对象上设置这些属性。请在https://github.com/mmanela/chutzpah处提出问题,要求该功能,然后派出/修补Chutzpah进行添加(或等待项目的开发人员希望这样做)。

更新:
我按下了fix for this issue。发行后,您可以在Chutzpah.json文件中使用以下内容:

{
  "userAgent": "myUserAgent"
}

10-08 02:16