教程下载地址:https://u18103887.ctfile.com/fs/18103887-308550816
接口稳定性
assert 模块提供了一系列的断言测试函数,设计这些辅助函数的初衷是服务于
Node.js 自身的开发。当然,开发者可以通过 require(‘assert‘) 将其应用到第
三方模块的开发中。不过, assert 模块并不是一个测试框架,不建议将其用作
通用的断言库。
assert 模块当前的 API 已处于锁定状态,这意味着该模块将不再轻易新增或修
改 API。
assert(value[, message])
等同于 assert.ok() :
const assert = require(‘assert‘);
assert(true);
// OK
assert(1);
// OK
assert(false);
// throws "AssertionError: false == true"
assert(0);
// throws "AssertionError: 0 == true"
assert(false, ‘it\‘s false‘);
// throws "AssertionError: it‘s false"
assert.deepEqual(actual, expected[, message])
比较参数 actual 和 expected 是否深度相等。对于参数中的原始值
(primitive value)使用 == 进行比较。
Assertion Testing
deepEqual() 只会遍历比较对象自身可枚举的属性,不会比较对象的原型、
symbol 和不可枚举的属性,所以在某些情况下结果可能会出人意料。比如在下面
的示例中就不会抛出 AssertionError ,这是因为 Error 对象的属性是不可枚举
的:
// WARNING: This does not throw an AssertionError!
assert.deepEqual(Error(‘a‘), Error(‘b‘));
方法名中的 Deep 一词意指会对传入的两个对象进行深度比较,包括对对象子级
可枚举属性的比较:
const assert = require(‘assert‘);
const obj1 = {
a : {
b : 1
}
};
const obj2 = {
a : {
b : 2
}
};
const obj3 = {
a : {
b : 1
}
};
const obj4 = Object.create(obj1);
assert.deepEqual(obj1, obj1);
// OK, object is equal to itself
assert.deepEqual(obj1, obj2);
// AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }
// values of b are different
assert.deepEqual(obj1, obj3);
// OK, objects are equal
assert.deepEqual(obj1, obj4);
// AssertionError: { a: { b: 1 } } deepEqual {}
// 原型继承而来的属性不计入比较范围
如果 actual 和 expected 不相等,则抛出 AssertionError 错误和
message 错误信息。如果未定义 message 参数,Node.js 会提供默认的错误信
息。
原文:https://www.cnblogs.com/xuanxuan2015/p/10527011.html