用Jasmine和node.jstesting客户端JavaScript代码

鉴于:客户端的JavaScript代码(在浏览器中运行,使用jquery等)。 目前代码是用Rhinoenvjs进行testing的。 我们想切换到node.js. 但经过一番研究,找不到任何模拟浏览器的envjs式的补充。

在“按原样”运行node.js ,即使缺lessalert()window等基本function。

有没有任何标准的包,类似于Rhino & envjsnode.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,这可能是一个更好的起点。

有两个选项

  1. 您的testing浏览器代码。 在浏览器中运行它。 模拟浏览器并不能certificate你的代码是有效的。
  2. 使用像幻影 / 僵尸的工具

当然,还有其他select,你可以提取任何与浏览器无关的代码,为它们编写一个unit testing套件,并在节点中运行它。 这只是JavaScript。

您还可以使用托pipe服务(如testling)为您运行浏览器testing