如何使用Chutzpah更改基础Phantomjs对象设置?

时间:2014-10-20 13:41:33

标签: javascript phantomjs user-agent qunit chutzpah

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

1 个答案:

答案 0 :(得分:1)

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

<强>更新 我推了fix for this issue。一旦发布,您可以在Chutzpah.json文件中使用以下内容:

{
  "userAgent": "myUserAgent"
}