给定:客户端javascript代码(在浏览器中运行,使用jquery等)。目前,代码使用Rhino
和envjs
进行测试。我们想切换到node.js.然而,经过一些研究,找不到任何模仿浏览器的envjs
式补充。
在“按原样”运行node.js
时,甚至缺少像alert()
或window
这样的基本功能。
是否有任何标准捆绑,类似Rhino & envjs
为node.js
请?
您可以使用zombie.js,它具有测试所需的一切。或者您可以利用jsdom(zombie.js在内部使用)在node.js中获取DOM,并针对该DOM执行测试。
我还可以推荐testling,它在所有常见浏览器中根据您的规范执行测试 - 代码在实际浏览器中针对您的服务运行。
这是jsdom的一个简单示例:
var jsdom = require("jsdom");
jsdom.env(url, ["http://code.jquery.com/jquery.min.js"], function(err, window) {
// jQuery is at window.$
});
您可以使用HTML文档或片段代替上面的url
。
您还可以加载页面并获取任何外部资源,而不是直接向jsdom提供jQuery等:
var jsdom = require("jsdom").jsdom,
doc = jsdom(markup),
window = doc.createWindow();
// Do your stuff on window, jsdom will have fetched all the scripts referenced in the markup
同样,zombie.js在内部使用jsdom,它可能是一个更好的起点。