Node.js 断言模块 Assert 模块

assert 模块

assert模块是Node的内置模块,主要用于断言。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。


assert(value[, message])

value <any> 检查是否为真的输入。

message <string> | <Error>

assert.ok() 的别名。


assert.ok(value[, message])

如果 value 不是真值,则抛出 AssertionError,并将 message 属性设置为等于 message 参数的值。 如果未定义 message 参数,则会分配默认错误消息。 如果 message 参数是 Error 的实例,则它将被抛出而不是 AssertionError。 如果没有传入任何参数,则将 message 设置为字符串:'No value argument passed to `assert.ok()`'。


assert.equal(actual, expected[, message])

equal方法接受三个参数,第一个参数是实际值,第二个是预期值,第三个是错误的提示信息。equal方法内部使用的是相等运算符(==),而不是严格运算符(===),进行比较运算。


assert.notEqual(actual, expected, [message])

notEqual方法的用法与equal方法类似,但只有在实际值等于预期值时,才会抛出错误。


assert.equal(actual, expected[, message])

测试 actual 参数和 expected 参数之间的深度相等。 深度相等意味着子对象的可枚举的自身属性也通过以下规则进行递归计算。

const assert = require('assert').strict;
// 失败,因为 1 !== '1'。
assert.deepStrictEqual({ a: 1 }, { a: '1' });
// 解封装后的数字不同:
assert.deepStrictEqual(new Number(1), new Number(2));
// 通过,因为对象与解封装后的字符串都是相同的。
assert.deepStrictEqual(new String('foo'), Object('foo'));


assert.notDeepEqual(actual, expected[, message])

测试深度严格的不平等。 与 assert.deepStrictEqual() 相反。


assert.strictEqual(actual, expected[, message])

测试 actual 参数和 expected 参数之间的严格相等性,使用 SameValue比较。


assert.notStrictEqual(actual, expected[, message])

测试 actual 参数和 expected 参数之间的严格不相等,使用 SameValue比较。

如果值严格相等,则抛出 AssertionError,并将 message 属性设置为等于 message 参数的值。 如果未定义 message 参数,则会分配默认错误消息。 如果 message 参数是 Error 的实例,则它将被抛出而不是 AssertionError。


assert.fail([message])

使用提供的错误消息或默认错误消息抛出 AssertionError。 如果 message 参数是 Error 的实例,则它将被抛出而不是 AssertionError。

const assert = require('assert').strict;
assert.fail();
// AssertionError [ERR_ASSERTION]: Failed
assert.fail('失败');
// AssertionError [ERR_ASSERTION]: 失败
assert.fail(new TypeError('需要数组'));
// TypeError: 需要数组
使用带有两个以上参数的 assert.fail() 是可能的,但已弃用。 



参考:

http://nodejs.cn/api/assert.html

真诚赞赏,手留余香
赞赏
随机推荐
使用Cordova命令行界面(CLI)
macOS 终端清理“新建远程连接”的历史记录
Nginx location 匹配顺序
Webpack file-loader 升级后 src= "[object Module]" 的解决方法
Vue.js 源码学习笔记
适用于thinkphp5的 Auth授权类
Vuex
DOM、DOM0、DOM1、DOM2和DOM3的关系
订单号该如何生成
Photoshop 智能对象 学习笔记