用Jasmine和node.jstesting客户端JavaScript代码
鉴于:客户端的JavaScript代码(在浏览器中运行,使用jquery等)。 目前代码是用Rhino
和envjs
进行testing的。 我们想切换到node.js. 但经过一番研究,找不到任何模拟浏览器的envjs
式的补充。
在“按原样”运行node.js
,即使缺lessalert()
或window
等基本function。
有没有任何标准的包,类似于Rhino & envjs
的node.js
请好吗?
你可以使用zombie.js ,它有你需要testing的所有东西。 或者,您可以利用jsdom (内部使用zombie.js)在node.js中获取DOM,然后针对该DOM执行testing。
我也可以推荐testling ,它根据您在所有常见的浏览器中的规范来执行testing – 代码在实际的浏览器上运行,对您的服务。
下面是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,这可能是一个更好的起点。
有两个选项
- 您的testing浏览器代码。 在浏览器中运行它。 模拟浏览器并不能certificate你的代码是有效的。
- 使用像幻影 / 僵尸的工具
当然,还有其他select,你可以提取任何与浏览器无关的代码,为它们编写一个unit testing套件,并在节点中运行它。 这只是JavaScript。
您还可以使用托pipe服务(如testling)为您运行浏览器testing