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, ‘预期两个对象应该有相同的属性‘);
   //预期两个数组应该有相同属性

 

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: 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 // 因为不测试原型。
View Code

 

以上是关于nodejs assert 模块的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs断言测试

nodejs常用代码片段

NodeJs + mongodb模块demo

断言(req.assert)如何在nodejs中工作

Nodejs 文档概览

imgwarp.cpp:3143: error: (-215:Assertion failed) _src.total() > 0 in function ‘warpPerspective‘(代码片段