与 Node.js 一起使用的最佳测试框架是啥? [关闭]

Posted

技术标签:

【中文标题】与 Node.js 一起使用的最佳测试框架是啥? [关闭]【英文标题】:What is the best testing framework to use with Node.js? [closed]与 Node.js 一起使用的最佳测试框架是什么? [关闭] 【发布时间】:2011-05-17 13:33:36 【问题描述】:

我在https://github.com/ry/node/wiki/modules#testing 上查看了相当长的测试框架列表。使用这些框架有何经验?

显然,在浏览器中运行的能力将是一个很大的好处,但我主要对 Node.js 感兴趣。带有严重异步倾斜的东西会很棒。

【问题讨论】:

【参考方案1】:

更新:

Mocha 在我看来是最好的。


使用这些框架有何经验?

我玩过expresso,这是一个非常酷的测试框架,它也有测试覆盖。它由 TJ Holowaychuk 创建,他也是 Express.js(基于 Node.js 和 Connect 构建的超快速(且小型)服务器端 javascript Web 开发框架)的创建者。我最近看到他还有一个很酷的库,叫做should.js,可以与 Expresso 一起使用,以获得更好的测试体验。

显然,在 浏览器将是一个很大的好处

我不相信它可以在浏览器中运行,但我也不明白你为什么要在浏览器中运行它?

但我主要对 Node.js 感兴趣。 严重异步的东西 倾斜会很棒。

快递引述:

传递给每个回调的参数 是 beforeExit,通常使用 断言回调已经 调用。

您可以使用 beforeExit 来测试异步函数。


提示:在GitHub 上关注TJ Holowaychuk,因为他创建了非常好的开源代码。

【讨论】:

感谢回复,我尝试了 expresso,但发现异步支持不是很直观。 (无论如何对我来说) 我目前正在尝试更容易理解的誓言 (vowsjs.org)。 vowjs 看起来也是一个不错的测试框架。我喜欢 expresso 的测试覆盖率功能。另外我想知道你不明白什么? 你说你现在更喜欢摩卡,但为什么呢? 试试吧。摩卡拥有一切:)。甚至浏览器支持,代码覆盖率。你的名字,摩卡有它!【参考方案2】:

我已经开始使用Jasmine 进行我的 JavaScript 测试,特别是因为它很小并且可以在浏览器和节点中运行。它还有一个非常可靠的报告和匹配器 API,因此将来很容易与其他工具集成。拥有一个内置模拟框架也很有用,因为它通常是我在浏览器中使用 qunit 进行 TDD 时首先添加的东西之一。

【讨论】:

【参考方案3】:

根据上面提问者的 cmets,我试用了vows,它解决了我在异步测试中遇到的很多问题。它混合串行和并行测试的能力非常棒。

请务必仔细阅读指导文档,但一旦掌握了窍门,它就会灵活、强大,并产生漂亮、干净的结果。

更新:我还鼓励人们查看should 的断言。它允许非常灵活、非常易读的断言,并且兼容 Expresso 和 Vows,可能还兼容大多数其他测试框架。

(我将其作为单独的答案发布,以防人们没有注意到 Alfred 答案中的 cmets。)

2015 年 1 月 7 日更新:不管怎样,我已经从 Vows 切换到 Mocha,从 Should 切换到 Chai。 Mocha 现在对使用 Promise 的异步测试有了更好的支持,Chai 允许一些灵活的断言选项,包括 expect api,供那些不喜欢修改对象原型的人使用。

【讨论】:

should 将一个名为 should 的不可枚举属性添加到 Object 原型,这意味着您正在处理的 所有 值/对象看起来 在测试时和生产时略有不同。虽然这在大多数情况下可能“正常工作”,但原则上修改内置原型是个坏主意;只在测试期间这样做感觉不对。这一切都是单独完成的,所以它们可以有一个很好的语法。 @flow 从 v2 开始,它很容易使用 should 而无需扩展 Object.prototype(只需调用 require('should').noConflict() 并使用 should.js 作为预期的替代方案。【参考方案4】:

我使用VowsJS,它易于使用异步 BDD 框架(行为驱动开发)并完成工作。

根据我最近看到的情况,许多人选择测试他们的 NPM 模块,所以我相信到目前为止它是最好用的一个。

可以与 NodeJS 一起使用的一些流行的测试框架也有:

Mocha Jasmine Expresso(不再维护) Should NodeUnit jsUnit

您还可以查看 JavaScript 测试框架列表here

可以帮助您编写更好的代码的库是以下几个:

ReadyJS 监视你的 js 文件并用 JSHint 测试它们 Concrete 小型 continuous integration 服务器 Jezebel Jasmine 的持续测试 Nosey 不完全在那里,但有一个很好的路线图,所以我会留意它

还有Bamboo CI Server by Atlassian 它可以自动构建和测试。它是Apache/Tomcat 的一个包(因为它使用Java,所以它很重) 也不是免费的,但它有一个starter license which costs $10,所以我相信它是负担得起的。它是迄今为止我发现的所有 CI 服务器中功能最强大的,它支持所有支持 xUnit 的单元测试,这意味着您可以使用 Bamboo 为任何语言运行构建/测试。

使用 NodeJS 的 CI 的另一个选择是 Travis,很多人将其用于他们的开源项目,正如它所说的 开源社区的托管持续集成服务。

还有一个Continuous Integration for Node JS Projects主题的google群讨论。

【讨论】:

给考虑使用 Vows 的人的说明:自 2012 年以来一直没有更新 他们made some changes after。最后发布:2015 年 9 月 2020 年 Vows 官网的网关坏了,可能死了吗? 哇,伙计,从那以后已经有很多年了,我现在能找到的关于 VowJS 的只有这个:istavros.github.io/vowjs 但不幸的是,我不能建议你在 2020 年使用它。它已经过时了,我强烈建议你改用 Mocha (mochajs.org)、Jasmin (jasmine.github.io) 和 Jest (jestjs.io)。【参考方案5】:

我一直在使用nodeunit,它使用异步函数的能力相当简单。

有一个很好的演练可以让你准备好使用 nodeunit on his blog。

[ 注意:自博文以来,API 发生了变化——setUp(callback)tearDown(callback) 都将回调作为参数,您需要在设置/拆卸完成时调用它。 ]

【讨论】:

看看这个并在 expresso 中尝试了一些 mongoose.js 函数的测试后,nodeunit 偏好不并行运行所有测试并允许 setUp 和 tearDown 测试看起来很有用。【参考方案6】:

如果你想要一个真正的 BDD 框架,那么可以考虑Yadda。它与 mocha、jasmine、nodeunit、qunit、zombie 和 casperjs 集成,以支持功能文件,例如

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2

【讨论】:

以上是关于与 Node.js 一起使用的最佳测试框架是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

创建 AngularJS ACL 的最佳方法是啥? [关闭]

Node.js 上 MongoDB 连接的最佳实践是啥?

使用 express.js 在 node.js 中提供 html 的最佳实践是啥?

node.js 的最佳 Facebook 连接库是啥?

在 node.js 中使用 fs 覆盖文件的最佳方法是啥

显示在线关注者的最佳方式是啥,node.js/socket.io 和 Redis