assert模块是Node的内置模块,主要用于断定。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。
1.assert()
assert(value[, message])
assert.ok()
的别名,ok是assert方法的另一个名字,与assert方法完全一样。
assert方法接受两个参数,当第一个参数对应的布尔值为true时,不会有任何提示,返回undefined。当第一个参数对应的布尔值为false时,会抛出一个错误,该错误的提示信息就是第二个参数设定的字符串
// 格式assert(value, message)// 例子var assert = require(‘assert‘);function add (a, b) { ?return a + b;}var expected = add(1,2);assert( expected === 3, ‘预期1加2等于3‘);
上面代码不会有任何输出,因为assert方法的第一个参数是true。
assert( expected === 4, ‘预期1加2等于3‘)// AssertionError: 预期1加2等于3
上面代码会抛出一个错误,因为assert方法的第一个参数是false。
2.assert.deepEqual(actual, expected[, message])
测试 actual
参数与 expected
参数是否深度相等。 原始值使用相等运算符(==
)比较。(通俗解释deepEqual方法用来比较两个对象。只要它们的属性一一对应,且值都相等,就认为两个对象相等,否则抛出一个错误。)
只测试可枚举的自身属性,不测试对象的原型、连接符、或不可枚举的属性(这些情况使用 assert.deepStrictEqual()
)。
1 // 格式 2 assert.deepEqual(actual, expected, [message]) 3 ?4 // 例子 5 var assert = require(‘assert‘); 6 ?7 var list1 = [1, 2, 3, 4, 5]; 8 var list2 = [1, 2, 3, 4, 5]; 9 10 assert.deepEqual(list1, list2, ‘预期两个数组应该有相同的属性‘);11 //预期两个数组应该有相同属性12 var person1 = { "name":"john", "age":"21" };13 var person2 = { "name":"john", "age":"21" };14 15 assert.deepEqual(person1, person2, ‘预期两个对象应该有相同的属性‘);
??//预期两个数组应该有相同属性
Map
和 Set
包含的子项也会被测试。
子对象中可枚举的自身属性也会被测试:
1 onst assert = require(‘assert‘); 2 ?3 const obj1 = { 4 ??a: { 5 ????b: 1 6 ??} 7 }; 8 const obj2 = { 9 ??a: {10 ????b: 211 ??}12 };13 const obj3 = {14 ??a: {15 ????b: 116 ??}17 };18 const obj4 = Object.create(obj1);19 20 assert.deepEqual(obj1, obj1);21 // 测试通过,对象与自身相等。22 23 assert.deepEqual(obj1, obj2);24 // 抛出 AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }25 // 因为 b 属性的值不同。26 27 assert.deepEqual(obj1, obj3);28 // 测试通过,两个对象相等。29 30 assert.deepEqual(obj1, obj4);31 // 抛出 AssertionError: { a: { b: 1 } } deepEqual {}32 // 因为不测试原型。
nodejs assert 模块
原文地址:http://www.cnblogs.com/yu-hailong/p/7623465.html