首页 > 解决方案 > 显示断言失败的预期值和实际值

问题描述

在为我的测试编写断言时,断言失败无法提供足够的信息,而无需打开 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)

任何意见,将不胜感激。

谢谢!

标签: node.jstypescriptassert

解决方案


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

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

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

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

希望这会有所帮助!


推荐阅读