Node.js单元测试


Answers:


66

我最终使用了节点单元,对此感到非常满意。

我最初使用Expresso,但是它并行运行测试的事实导致了一些问题。(例如,在这种情况下,使用数据库固定装置效果不佳)。


25
Expresso不会强迫您并行运行测试。输入--serial参数,它将以快乐的顺序运行它们。
einaros 2011年

3
刚刚下载并使用了nodeunit ...完全如其所说,第一次工作!
Michael Dausmann

1
Nodeunit要求每次测试都调用.done()imho 有点奇怪。
科斯2012年

2
如果我现在开始一个新项目,我可能会使用Mocha作为测试框架
evilcelery,2012年

1
Nodeunit需要.done()适应异步测试。我同意有时可能有些笨拙,但是这样做有充分的理由。
L0j1k 2014年

48

我也在寻找一个不错的node测试框架,并找到了 Mocha。它是Expresso的正式继任者,看起来非常成熟。

它允许插入不同的断言库,它为报告程序提供代码覆盖范围和其他内容(您可以自己插入)。它可以运行同步或异步,并且具有简洁的API。

我会尝试并回报...

编辑:

经过大量的时间专门用于其他项目之后,我终于回到了Javascript项目,并有时间玩摩卡游戏。我可以认真推荐使用它。这些测试的读法非常好,与gulp集成非常好,并且测试运行非常快。我能够在大约半天的时间内设置自动独立运行以及浏览器内(browserify)测试运行和相应的代码覆盖率报告(大部分时间用于了解如何从gulp中使用browserify)。对我而言,mocha似乎是测试框架的绝佳选择。

更新:

我仍然对Mocha充满信心。与chai集成允许插入不同的断言样式。您可以在此github项目中签出有效的设置。我现在将其与业力一起使用,集成了代码覆盖率报告,自动监视程序以及与IntelliJ的良好集成


github项目链接已损坏。您可以续订吗?
karlisup '16


15

我个人只使用了assert模块,还发现自己想要更多。我查看了许多节点模块,流行的单元测试框架是节点单元,应该(由Expresso的同一个人制造(也许是更新的名称?))

誓言看起来也很有希望。


15
我只为那个双关语投票。
ThomasReggi 2013年

15

我个人一直坚持使用Expresso,但是那里有很多不同的框架,可以适应大多数测试样式。

乔伊特有广泛的名单 ; 放手一搏。


1
Expresso是唯一对我有意义的代码,并且可以正确处理异步代码。也尝试过誓言和qunit。
balupton

5

vows是一个用于node.js的可靠的单元测试库,但是语法很乏味。

我写了一个叫做vows-fluent的瘦抽象,它使API可链接。

我写了另一个抽象[vows-is],它基于vows-fluent构建并公开了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
});

更多例子


6
对此,誓言语法令人发指IMO
Donn Felker

用appeasy包装器玩过誓言。看起来是测试json API的好主意,但很快就出现了。我还趋向于发现,像这样的面向链接调用的api很难使用和调试。它们在示例中看起来不错,但在实际使用中效果不佳。
drekka 2012年

@drekka的誓言和誓言是可怕的。使用摩卡咖啡
雷诺斯(Raynos)2012年

现在尝试一下,但似乎遇到了类似的问题。
drekka 2012年

那你一定用错了。尝试阅读gist.github.com/2896455。@drekka
雷诺斯2012年



0

deadunit最初是为node.js制作的,是一个针对node.js和浏览器的javascript单元测试库。它的一些独特属性:

  • 易学曲线
  • 可以在命令行(彩色或纯文本)或html上输出测试结果
  • 它打印出断言所在的实际代码行,因此即使您没有花费很多时间编写测试注释,您的输出也很有意义
  • 它有一个简单的count断言,使处理预期的异常和异步断言变得容易
  • 它打印出异常以及它们具有的任何附加数据
  • 它会告诉您代码是否挂起(您不想要的东西,但通常不会被注意到)
  • 具有事件驱动的API,可以通过网络或您希望的任何方式流式传输测试结果。
  • 支持使用节点光纤进行测试

0

我刚刚上传了一个项目,用于使用karma和Jasmine:narma对nodejs进行单元测试。您的节点模块将加载到nodewebkit浏览器中,因此您可以在同一堆中执行节点模块并使用jquery之类的库。


0

test-studio是一个npm软件包,它提供了功能强大的基于Web的前端用于单元测试。它支持诸如执行单个或一组测试以及将节点检查器逐步引入单个测试之类的事情。它目前支持摩卡(mocha),未来将根据需求支持更多框架。

在此处了解更多信息。

免责声明:我是作者。


1
看起来这是你写的,对吧?如果是这样,您应该在回答中披露该事实。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.