assert.AssertionError
Error的子类
new assert.AssertionError(options)
- message
- actual 实际输入
- expected 期待输入
- operator 比较的操作(或触发错误的断言函数)
- stackStartFn 移除所有堆栈跟踪 只保留当前
不知道里面能写点啥
严格模式
const assert = require('assert').strict;
assert.ok(value[, message])
参见 assert()
assert(value[, message])
assert.ok别名
等同 assert.equal(!!value, true, message)
- value 判断value是否为真
- message 为假抛出的信息
assert.deepStrictEqual(actual, expected[, message])
- 原始值使用 SameValue比较 (Object.is)
- 对象的
类型标签
(type tag
)应该相同
var a;
Object.prototype.toString.call(a); // [object Undefined]
Object.prototype.toString.call([]); // [object Array]
- 使用
严格相等
(Strict equal ===)比较来比较对象的原型 - 只考虑
可枚举
的自身属性
- 始终比较 Error 的名称和消息,即使这些不是可枚举的属性
let err1 = new Error({
name: 'err',
message: 'message'
});
let err2 = new Error({
name: 'err',
message: 'message'
});
// AssertionError [ERR_ASSERTION]: Input objects identical but not reference equal
assert.strictEqual(err1, err2);
- 可枚举的自身 Symbol 属性也会比较
-
对象封装器
作为对象和解封装后的值都进行比较
对象封装器: 待补充
- Object 属性的比较是无序的。
- Map 键名与 Set 子项的比较是无序的
- 当两边的值不相同或遇到循环引用时,递归停止。
- WeakMap 和 WeakSet 的比较不依赖于它们的值
Map Set WeakMap WeakSet : 待补充
assert.doesNotReject(asyncFn[, error][, message])
assert.doesNotThrow(fn[, error][, message])
- 两个类似 断言不会出现错误
- doesNotReject 支持异步
assert.fail([message])
抛出个错误
- message <string> | <Error>
assert.ifError(value)
- 如果 value 不为 undefined 或 null,则抛出 value。
- 只有 undefined 和 null能通过
assert.notDeepStrictEqual(actual, expected[, message])
参见assert.deepStrictEqual
assert.notDeepStrictEqual({ a: 1 }, { a: '1' });// 通过
assert.strictEqual(actual, expected[, message])
- 测试 actual 参数和 expected 参数之间的严格相等性,使用 SameValue比较。
SameValue 关于相等的判断
assert.notStrictEqual(actual, expected[, message])
参见 assert.strictEqual
测试 actual 参数和 expected 参数之间的严格不相等,使用
SameValue
比较
assert.rejects(asyncFn[, error][, message])
- 期望 asyncFn 函数抛出错误 或rejected Promise
- 如果指定第二个参数 那么 要求抛出的错误 和 第二个参数相同 或者满足第二个的条件
- message 自定义抛出错误的信息 不符合后 抛出的错误
assert.throws(fn[, error][, message])
和rejects差不多
网友评论