node.js - 显示断言失败的预期值和实际值

标签 node.js typescript assert

在为我的测试编写断言时,断言失败无法提供足够的信息,无需打开 IDE 并开始调试。

例如,我有一些使用“assert”库的代码:

import * as assert from 'assert'

// some code

assert(someObject.getValue() === 0)

我刚刚得到

       AssertionError [ERR_ASSERTION]: false == true
           + expected - actual

           -false
           +true

这个错误消息并没有什么实际意义。作为解决方法,我将其添加到断言的消息中:

assert(someObject.getValue() === 0, 
       '\nActual: ' + someObject.getValue() + 
       '\nExpected: ' + 0)

是否有更好、更简洁的方法来仅显示预期值和实际值,而不覆盖每个断言的消息?我还尝试创建一个 assert 包装器,但无法从表达式中提取实际值和预期值。

编辑:assert.strictEqual 仅针对相等性解决此问题。但是一旦包含任何其他运算符,我们就会遇到同样的问题(例如 assert(someObject.getValue() > 0)

如有任何建议,我们将不胜感激。

谢谢!

最佳答案

您可以使用assert.strictEqual(actual, expected[, message])无需第三个消息参数即可获取实际/预期的错误消息:

assert.strictEqual(someObject.getValue(), 0)

您会收到一条错误消息,例如:

// AssertionError [ERR_ASSERTION]: Expected inputs to be strictly equal:
//
// 1 !== 0

希望有帮助!

关于node.js - 显示断言失败的预期值和实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54243161/

相关文章:

node.js - Laravel Elixir 的关键 CSS

node.js - 如何使用 swagger-express-mw 和 express 上传文件?

javascript - 如何使用 Express.js 将数据发布到 HTML?

TypeScript:实现具有调用签名和索引签名的接口(interface)

css - ionic : Sticky button at the bottom of a particular ion-slide

C 复制带有两个指针的链表

Python:如何为程序创建积极的测试?

javascript - 无法使用 Sequelize 更新(或保存)现有行

javascript - 我可以在 typescript 中使用 handsontable 吗

python - 测试带有 float 的元组的断言