给定:客户端javascript代码(在浏览器中运行,使用jquery等)。目前,该代码在Rhino和envjs上进行了测试。我们想切换到node.js。但是,经过研究后,找不到任何模拟浏览器的envjs-like补充工具。
在“按原样”运行node.js时,甚至缺少alert()或window等基本功能。
有没有类似于node.js的Rhino & envjs的标准包?
发布于 2012-03-01 22:11:38
您可以使用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.$
});你可以有一个url文档或片段来代替上面的HTML。
您还可以加载页面并获取任何外部资源,而不是直接向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,这可能是一个更好的起点。
发布于 2012-03-01 22:12:55
有两个选项可供选择
这样的工具
当然也有替代方案,你可以提取任何与浏览器无关的代码,为它们编写一个单元测试套件,然后在node中运行它。只是JavaScript而已。
您还可以使用testling等托管服务为您运行浏览器测试
https://stackoverflow.com/questions/9517351
复制相似问题