Node内置对象之assert
一.assert主要是做什么的?
assert模块是Node的内置模块,主要用于断言。如果表达式不符合预期,就抛出一个错误,可用于测试模块功能,有少数几个是常用的。
二.assert的使用
通用概念:
* actual:实际的值
* expeacted:预期的值
* message:报错时候抛出的错误参数
1.Assert
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"
2.assert.deepEqual(actual, expected[, message])
比较实际值是否等于预期值。相当于===
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);
3.assert.assert.deepStrictEqual(actual, expected[, message]))
注意点 deepStrictEqual相当于===
const assert = require('assert');
assert.deepEqual({a:1}, {a:'1'});
// OK, because 1 == '1'
assert.deepStrictEqual({a:1}, {a:'1'});
// AssertionError: { a: 1 } deepStrictEqual { a: '1' }
// because 1 !== '1' using strict equality
4.assert.doesNotThrow(block, error)
doesNotThrow预期不一样的时候,预期某个代码块不抛出错误
assert.doesNotThrow(
() => {
throw new TypeError('Wrong value');
},
SyntaxError
);
5.assert.equal(actual, expected[, message])
注意点:equal方法内部使用的是相等运算符(==),而不是严格运算符(===),进行比较运算。
const assert = require('assert');
assert.equal(1, 1);
// OK, 1 == 1
assert.equal(1, '1');
// OK, 1 == '1'
assert.equal(1, 2);
// AssertionError: 1 == 2
assert.equal({a: {b: 1}}, {a: {b: 1}});
6.assert.fail(actual, expected, message, operator)
fail方法用于抛出一个错误
const assert = require('assert');
assert.fail(1, 2, undefined, '>');
// AssertionError: 1 > 2
assert.fail(1, 2, 'whoops', '>');
7.assert.ifError(value)
ifError方法断言某个表达式是否false
const assert = require('assert');
assert.ifError(0); // OK
assert.ifError(1); // Throws 1
assert.ifError('error'); // Throws 'error'
assert.ifError(new Error()); // Throws Error
8.assert.notDeepEqual(actual, expected[, message])
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.notDeepEqual(obj1, obj1);
// AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
assert.notDeepEqual(obj1, obj2);
// OK, obj1 and obj2 are not deeply equal
9.assert.notEqual(actual, expected[, message])
const assert = require('assert');
assert.notEqual(1, 2);
// OK
assert.notEqual(1, 1);
// AssertionError: 1 != 1
assert.notEqual(1, '1');
// AssertionError: 1 != '1'
10.assert.notStrictEqual(actual, expected[, message])
比较值,相当于==
const assert = require('assert');
assert.notDeepEqual({a:1}, {a:'1'});
// AssertionError: { a: 1 } notDeepEqual { a: '1' }
assert.notDeepStrictEqual({a:1}, {a:'1'});
// OK
11.assert.ok(value[, message])
ok是assert方法的另一个名字,与assert方法完全一样。
const assert = require('assert');
assert.ok(true); // OK
assert.ok(1); // OK
assert.ok(false);
// throws "AssertionError: false == true"
assert.ok(0);
// throws "AssertionError: 0 == true"
assert.ok(false, 'it\'s false');
12.assert.strictEqual(actual, expected[, message])
相当于比较 ===
const assert = require('assert');
assert.strictEqual(1, 2);
// AssertionError: 1 === 2
assert.strictEqual(1, 1);
// OK
assert.strictEqual(1, '1');
// AssertionError: 1 === '1'
13.assert.throws(block, error)
throws方法预期某个代码块会抛出一个错误,且抛出的错误符合指定的条件
assert.throws(
() => {
throw new Error('Wrong value');
},
Error
);
*nodejs的环境:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。