防止zombie.js仅加载外部资源

jne*_*der 5 javascript testing express zombie.js

我在测试期间使用zombie.js从本地Express服务器加载页面.不幸的是,有一个脚本元素可以调用Google Analytics.我想阻止这个外部脚本(优雅地),如果可能的话,不会阻止加载其他(本地)脚本.

我知道{ runScripts : false }可以拨打电话browser.visit().但是,拒绝加载页面上的任何和所有脚本,而不仅仅是那些生活在其他主机上的脚本.这可能吗?

Cor*_*ewe 8

僵尸3.1开始,browser.resources.mock方法就不见了.另一种方法是使用nock库:

var nock = require('nock')

nock('http://www.google-analytics.com')
  .get('/analytics.js')
  .times(Math.Infinity)
  .reply(200, '{}')

var Browser = require('zombie')
var browser = new Browser()
Run Code Online (Sandbox Code Playgroud)


gco*_*ard 7

您应该使用资源对象.

如果您不希望请求实际通过,您可以设置某些请求以提供特定响应.您将执行以下操作以使Google Analytics分析返回空文档:

browser.resources.mock('http://google.com/url/to/analytics.js',{});
Run Code Online (Sandbox Code Playgroud)

请注意,您必须提供要模拟的确切URL,无法模拟部分URL(如域名).