gpt4 book ai didi

javascript - Node.js 断言库与其他断言库

转载 作者:IT老高 更新时间:2023-10-28 23:02:42 27 4
gpt4 key购买 nike

根据 node.js 断言库 documentation :

The module is intended for internal use by Node.js, but can be used in application code via require('assert'). However, assert is not a testing framework, and is not intended to be used as a general purpose assertion library.

我在看 Chai作为替代断言库(没有 BDD API,只有断言 API),最后我看到断言功能非常相似。

为什么 Chai 的断言库是一个更好的断言库?它比 node.js 做了所有事情(除了在可用的断言方面更丰富,但这只是语法糖衣)。即使是简单的事情,例如执行的断言总数,也无法在两者上使用。

我错过了什么吗?

最佳答案

更新(2017 年 4 月):Node.js 不再警告人们不要使用 assert 所以下面的答案现在已经过时了。不过,出于历史利益考虑。

这里是 the answer I posted to a very similar question on the Node.js issue tracker .

https://github.com/nodejs/node/issues/4532和其他问题暗示了文档建议不要使用 assert 进行单元测试的原因:存在边缘案例错误(或至少肯定是意外)和缺少功能。

更多上下文:了解我们现在所知道的,如果我们重新设计/构建 Node.js 核心,那么 assert 模块将不会存在于 Node.js 中,或者包含更少的函数——很可能只是 assert()(目前是 assert.ok() 的别名)。

至少从我的 Angular 来看,原因是:

  • assert 中完成的所有事情都可以在用户空间中轻松完成
  • 核心工作最好花在其他地方,而不是完善可以在用户空间中完成的单元测试模块

其他人可能会选择在此处添加或不添加其他上下文(例如,为什么在所有条件相同的情况下,我们更倾向于保持内核较小并在用户空间中做事)。但这就是所谓的 30,000 英尺 View 。

由于 assert 已经在 Node.js 中使用了很长时间并且很多生态系统都依赖于它,所以我们不太可能(至少就我目前所知)永远删除 assert.throws() 和 friend 。它会破坏太多东西。但是我们可以劝阻人们不要使用 assert 并鼓励他们使用用户态模块.所以这就是全部内容。

确实,如果您使用简单的案例进行简单的断言,assert 可能会满足您的需求。但是,如果您的assert 超出了您的要求,那么您最好使用chai 或其他任何东西。所以我们鼓励人们从那里开始。这对他们(通常)更好,对我们(通常)更好。

我希望这对您有所帮助并回答您的问题。

关于javascript - Node.js 断言库与其他断言库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com