node.js - 显示断言失败的预期值和实际值
问题描述
在为我的测试编写断言时,断言失败无法提供足够的信息,而无需打开 IDE 并开始调试。
例如,我有一些使用“断言”库的代码:
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
希望这会有所帮助!
推荐阅读
- c# - ILogger 不以 JSON 格式返回消息和对象
- java - 来自终端的扫描仪输入
- sql - 我可以将两个查询放在 sql 或 pl/sql 中以创建新表或视图吗?
- charts - 使用谷歌图表(条形图),我可以制作 de bar 颜色线性渐变吗?
- assembly - 如果内存组织为字,为什么程序计数器加 1,如果是字节,程序计数器加 2?
- mysql - SQL请求输出上月最大数
- c++ - C++ clock() 只返回零
- google-apps-script - 以编程方式与特定用户(不是 Teamdrive 成员)共享 Teamdrive 中的文件
- netsuite - 如何将内联 HTML 列添加到套件脚本子列表?
- google-app-engine - gcloud app deploy 和 kubectl Expose 部署有什么区别?