node.js的unit testing框架,专门支持testingasynchronous代码?

在node.js模块列表中列出了30多个testing框架…

哪个框架最受欢迎? 他们有什么优点和缺点?

我正在寻找一个框架,支持有很多asynchronouscallback(可能像大多数其他节点项目)的代码的unit testing。 另外,我正在寻找一些相对简单而又复杂的东西。

到目前为止,我已经看过:

  • Nodeunit非常简单,支持asynchronous代码,可以让你定义你想要调用的断言以及testing完成的时间。
  • Vowsjs看起来很有趣。 允许您很好地构造testing,并具有许多高级function。 不确定这些function是否实际上是有用的,通过,或者如果他们相当阻碍你的方式?

expresso和誓言是最受欢迎的select。 虽然有很多很好的select。 更新:截至2011年11月,根据Expresso版本库中的Readme.md, Mocha是expresso的inheritance者。 should.js通常与Mocha一起使用,以允许BDD风格的断言。

无论你select什么,我build议轻轻地使用核心或第三方模块。

我使用/维护睾酮 ,一个小testing框架,在串行运行testing,所以你可以轻轻地滥用。 没有那么多人使用它。

自2012年3月以来,我们一直在使用Nodeunit ,并没有回头。 它简单易用,它允许您在模块级和类级别的设备(setup / teardown)之间进行select,它具有一组合理的内置断言,其命令行工具非常灵活。 尝试将它与nodemon结合起来。

我们简单地看了一下誓言,但是不想要一个全新的奇怪的语法来定义testing。 所有你需要的是断言,固定装置和一个不错的线束,而Nodeunit完全符合这个法案。

QUnit和testing框架一样简单,并支持asynchronous调用。 这是JQuery的testing工具,所以你可以肯定它是高度支持和运作良好。

您可以考虑与Sinon集成,这是一个模拟框架,它特别允许您伪造asynchronous事件。 本教程和本教程的其他部分介绍了如何使用Sinon来testingasynchronous代码。 它在浏览器上,但你应该能够适应testing节点应用程序。

我还没有用过,但是Pivotal Labs的Jasmine呢?

小插件为我自己的库,但更重要的是,我只想让其他线束开发人员考虑在JS中的asynchronoustesting应该是什么样子:

我特地写了OKJS,因为QUnit是如此无用的asynchronous。 QUinit无法捕获exception(!),并需要一个hacky start()来跟踪深度。

许多testing框架没有一个简单的callback包装来testing超时和捕获exception。 我不确定为什么 – callback是asynchronous开发的核心。 = /

setTimeout(function() { ok( true, "Passed and ready to resume!" ); start(); }, 1000); 

OKJS捕获事件侦听器中的exception,并使用可能无法通过testing的内部死锁触发器来​​跟踪未完成的asynchronous请求。

  setTimeout( unit.callback("test callback is fired"), 500); setTimeout( unit.callback("callback fired, with subtests", function () { unit.assert("in callback, true === true", true,true); }), 500); 

很想看到这种风格支持企业解决scheme。 OKJS提倡的其他function是可以串行执行的testing块(配方样式),但在块之间等待事件的解决。

test-studio是一个npm包,它为unit testing提供了一个function强大的基于web的前端。 它目前仅支持摩卡,并提供诸如执行单个或多组testing以及将节点检查器逐步进行单独testing的事情。

在这里阅读更多关于它。