【问题标题】:Node.js unit testing [closed]Node.js 单元测试 [关闭]
【发布时间】:2011-11-07 09:58:55
【问题描述】:

目前有没有好的 Node.js(服务器端 JavaScript)单元测试框架?

我正在寻找比提供的 Assert 模块更深入的东西。

【问题讨论】:

    标签: javascript unit-testing node.js


    【解决方案1】:

    我刚刚上传了一个项目,用于对带有 Karma 和 Jasmine 的 Node.js 进行单元测试:Narma

    您的 Node.js 模块被加载到 node-webkit 浏览器中,因此您可以在同一个堆中执行 Node.js 模块并使用 jQuery 等库。

    【讨论】:

      【解决方案2】:

      最初是为 Node.js 制作的,deadunit 是一个用于 Node.js 和浏览器的 JavaScript 单元测试库。它的一些独特属性:

      • 简单的学习曲线
      • 可以在命令行(彩色或纯文本)或 HTML 格式输出测试结果
      • 它会打印出您的断言所在的实际代码行,因此即使您没有花费大量时间编写测试注释,您的输出也很有意义
      • 它有一个简单的count 断言,可以轻松处理预期的异常和异步断言
      • 它会打印出异常他们拥有的任何附加数据
      • 它会让您知道您的代码是否挂起(这是您不想要的,但通常会被忽视)
      • 拥有一个事件驱动的 API,可以通过网络或以任何您想要的方式流式传输测试结果。
      • 支持使用node-fibers 进行测试

      【讨论】:

        【解决方案3】:

        我认为在各种可用的测试框架中,Mocha 是最新的,并且实现起来非常简单。这是一个关于如何使用它的精彩教程:

        How to build and test your Rest API with Node.js, Express and Mocha

        【讨论】:

        • 嗯,感谢您对本教程的称赞 :)
        【解决方案4】:

        我也在寻找一个不错的节点测试框架,并找到了Mocha。是Expresso的官方接班人,看起来很成熟。

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

        我会试一试并报告...

        编辑:

        在投入大量时间用于其他项目之后,我终于回到了一个 JavaScript 项目,并有时间玩 mocha。我可以认真推荐使用它。测试读起来非常好,与Gulp.js 的集成非常好,测试运行速度非常快。我能够在大约半天的时间内设置自动独立以及浏览器内 (Browserify) 测试运行和相应的代码覆盖率报告(大部分时间花在了解如何从 Gulp.js 使用 Browserify)。对我来说,Mocha 似乎是一个非常好的测试框架选择。

        更新:

        我对摩卡还是很有信心的。与Chai 集成允许插入不同的断言样式。您可以在this GitHub project 中查看工作设置。我现在将它与 karma 一起使用,集成了代码覆盖率报告、自动观察器以及与 IntelliJ IDEA 的良好集成。

        【讨论】:

        【解决方案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
        });
        

        More examples.

        【讨论】:

        • 阿门,誓言语法是可怕的 IMO
        • 使用 appeasy 包装器玩起了誓言。看起来是测试 json api 的好主意,但很快就失败了。我还倾向于发现,像这样的链接调用的 API 很难使用,也很难调试。它们在示例中看起来不错,但在实际使用中效果不佳。
        • @drekka 誓言和誓言是可怕的。使用摩卡
        • 现在正在尝试,但似乎遇到了类似的问题。
        • 那你一定是用错了。尝试阅读gist.github.com/2896455。 @drekka
        【解决方案6】:

        我最终使用了Nodeunit,对此我感到非常满意。

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

        【讨论】:

        • Expresso 不会强制您并行运行测试。将 --serial 参数输入它,它会以愉快的顺序运行它们。
        • 刚刚下载并使用了nodeunit...完全按照它说的做,第一次工作!
        • Nodeunit 有点奇怪,要求每个测试都调用.done() imho。
        • 如果我现在开始一个新项目,我可能会使用 Mocha 作为测试框架
        • Nodeunit 需要.done() 以适应异步测试。我同意它有时可能有点笨拙,但这样做有充分的理由。
        【解决方案7】:

        我个人只使用过 assert 模块,但我也发现自己想要更多。我浏览了许多 Node.js 模块,流行的单元测试框架是 Nodeunit 和应该(它是由与 Espresso 相同的人制作的(也许是更新的名称?)

        Vows 看起来也很有希望。

        【讨论】:

        • 我只为这个双关语给你投票。
        【解决方案8】:

        test-studio 是一个 npm 包,它为单元测试提供了一个强大的、基于 Web 的前端。它支持诸如执行单个或一组测试以及将节点检查器步进到单个测试中之类的事情。它目前支持 mocha,未来会根据需求支持更多框架。

        阅读更多关于它的信息here

        免责声明:我是作者。

        【讨论】:

        • 看起来这是你写的,对吧?如果是这样,您应该在回答中披露这一事实。
        【解决方案9】:

        如果您熟悉QUnit,您可以使用node-qunit,它是一种围绕 QUnit 现有框架的节点包装器。

        【讨论】:

          【解决方案10】:

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

          Joyent 有an extensive list;试一试。

          【讨论】:

          • Expresso 是唯一对我有意义的,并且可以正常使用异步代码。也尝试过 vows 和 qunit。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-08
          • 2010-12-21
          • 2017-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-18
          相关资源
          最近更新 更多