nodejs assert 模块
Posted 开始战斗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs assert 模块相关的知识,希望对你有一定的参考价值。
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, ‘预期两个对象应该有相同的属性‘);
//预期两个数组应该有相同属性
子对象中可枚举的自身属性也会被测试:
1 onst assert = require(‘assert‘); 2 3 const obj1 = { 4 a: { 5 b: 1 6 } 7 }; 8 const obj2 = { 9 a: { 10 b: 2 11 } 12 }; 13 const obj3 = { 14 a: { 15 b: 1 16 } 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 模块的主要内容,如果未能解决你的问题,请参考以下文章
imgwarp.cpp:3143: error: (-215:Assertion failed) _src.total() > 0 in function ‘warpPerspective‘(代码片段