Node.jsunit testing
目前有没有好的node.js(服务器端js)unit testing框架? 我正在寻找比所提供的Assert模块更深的东西。
我结束了使用节点单元 ,我真的很高兴。
我最初使用的是Expresso,但它并行运行testing的事实引起了一些问题。 (例如,在这种情况下使用数据库设备不能很好地工作)。
我也在寻找一个体面的节点testing框架,并find了摩卡 。 它是Expresso的正式inheritance者,似乎非常成熟。
它允许插入不同的断言库,它提供代码覆盖和其他事情的记者(你可以插入自己的)。 它可以运行同步或asynchronous,它有一个简洁的API。
我会试一试,然后回报
编辑:
在为其他项目投入了大量时间之后,我终于回到了一个Javascript项目,并有时间与摩卡玩耍。 我可以认真地推荐使用它。 testing阅读非常好,与gulp集成非常好,testing运行速度非常快。 我能够在半天左右(大部分时间花在了解如何使用浏览器)上设置自动独立以及浏览器内(browserify)testing运行和相应的代码覆盖率报告。 对我来说,摩卡看起来是一个testing框架的非常好的select。
更新:
我仍然非常相信摩卡。 与chai集成允许插入不同的断言样式。 你可以在这个github项目中签出一个工作设置。 我现在正在使用它与业力,整合代码覆盖率报告,自动观察者和与IntelliJ良好的集成
就我个人而言,我坚持使用Expresso ,但是那里有一堆不同的框架,可以适应大多数的testing风格。
Joyent有一个广泛的名单 ; 给一个去。
我个人只使用断言模块,但也发现自己想要更多。 我已经浏览了许多节点模块,stream行的unit testing框架是节点单元 ( node-unit) ,应该(它是由Expresso的同一个人制作的(可能是更新后的名称)
誓言也看起来很有希望。
我已经设置了摩卡 – 这里有一个很好的教程 – http://brianstoner.com/blog/testing-in-nodejs-with-mocha/
vows是一个坚实的Node.jsunit testing库,但是语法很单调。
我写了一个名为vows-fluent的简单抽象,它使API可链接。
而且我写了另外一个抽象,[vows-is],它是build立在誓言之上的,stream利并且暴露了一个BDD风格的语法。
一个例子是
var is = require("vows-is"); is.suite("testing is fun").batch() .context("is testing fun?") .topic.is("yes") .vow.it.should.equal("yes") .suite().run({ reporter: is.reporter });
更多的例子
我认为在各种可用的testing框架中, 摩卡是最新的,也是非常简单的。 这是一个关于如何使用它的奇妙教程: http : //thewayofcode.wordpress.com/2013/04/21/how-to-build-and-test-rest-api-with-nodejs-express-mocha/
如果您熟悉QUnit ,则可以使用node-qunit ,它是QUnit现有框架的一种节点包装。
最初是为node.js制作的, deadunit是一个用于node.js和浏览器的javascriptunit testing库。 它的一些独特的属性:
- 简单的学习曲线
- 可以在命令行(彩色或纯文本)或html上输出testing结果
- 它打印出你的断言的实际代码行,所以即使你不花很多时间写testing评论,你的输出也是有意义的
- 它有一个简单的
count
断言,使处理预期的exception和asynchronous断言很容易 - 它打印出exception和任何附加的数据
- 它会让你知道,如果你的代码挂起(你不想要的,但通常不被注意)
- 使用事件驱动的API可以在networking上以任何方式stream式传输testing结果。
- 支持使用节点光纤进行testing
我刚刚上传了一个项目,我正在用业力和Jasmine: narmaunit testingnodejs 。 你的节点模块被加载到一个nodewebkit浏览器中,所以你可以执行节点模块,并在同一个堆中使用类似jQuery的库。
test-studio是一个npm包,它为unit testing提供了一个function强大的基于web的前端。 它支持执行单个或多组testing以及将节点检查器逐步进行单个testing。 目前它支持摩卡,更多的框架将在未来的需求支持。
在这里阅读更多关于它。
免责声明:我是作者。
- var functionName = function(){} vs function functionName(){}
- AngularJS – 任何方式为$ http.post发送请求参数,而不是JSON?
- 在JavaScript中访问Java / Servlet / JSP / JSTL / ELvariables
- JSON.Parse,'未捕获的SyntaxError:意外的令牌o
- 如何在React中设置嵌套状态
- Qunit参数化testing和嘲笑
- 如何删除select框的所有选项,然后添加一个选项,并select与jQuery?
- 如何检测Facebook的FB.init何时完成
- 检测在网页中使用哪种字体