node.js学习之断言assert的使用示例

2020-06-17 07:05:15易采站长站整理

assert.ok(false,"自定义错误信息");
//AssertionError [ERR_ASSERTION]: 自定义错误信息

三. 判断预期值和实际值相等(==)

这一组里面有两个测试函数,用于测试预期值与实际值是否相等,如果相等则断言通过,否则抛出 【AssertionError】

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

assert.equal()
用于测试期望值和实际值是否相等,【在值类型的时候比较的是两个值是否相等,当预期值和实际值为引用类型的时候,比较的是值得引用】


assert.equal(1, 1);
assert.equal("1", 1);

上面代码是对值类型进行的比较,说明

equal()
在内部使用的是(==),而非严格相等,待会儿我会总结到严格相等(===)


assert.equal({},{},"AssertionError");
assert.equal(() => { }, () => { }, "AssertionError");
assert.equal([],[],'AssertionError');

上面三个表达式都会抛出【message】属性值为’AssertionError’的【AssertionError】对象,【所以当值为引用类型的时候,

equal()
比较的是值得引用,因此两个引用类型的值是没法通过
equal()
断言的】


const obj={};
assert.equal(obj,obj);
// 断言通过

上面代码由于比较的是同一个对象,两个值得引用相等,所以断言通过。

3.2 assert.deepEqual(actual, expected[, message])

同样也是测试 预期值 和 实际值 是否相等,使用的仍然是(==),但是与equal不同的是,【

deepEqual()
在对引用类型进行比较的时候,不是对值的引用进行比较,而是比较的对象的属性值】


const a = 'Blue', b = 'Pink';
assert.deepEqual(a,a,'actual unequal to expected');
// 断言通过
assert.deepEqual(a,b,'actual unequal to expected');
// AssertionError [ERR_ASSERTION]: actual unequal to expected

上面是对值类型进行的比较,和

equal()
没有任何的区别


const obj1 = { name: "foo", gender: "men" },
obj2 = { name: "foo", gender: "men" },
obj3 = { name: "bar", gender: "men" }
assert.deepEqual(obj1, obj2, 'actual unequal to expected');
// 断言通过
assert.deepEqual(obj1, obj3, 'actual unequal to expected');
// AssertionError [ERR_ASSERTION]: actual unequal to expected

上面代码是对引用类型的比较,可以看出【

deepEqual()