Nodejs v4.x.0API文档学习(2)Assert断言测试模块
文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/
Assert(断言)
assert模块提供了一组简单的断言测试方法,可以拥有测试不变量。该模块本意是用于node.js内部使用,但是现在可以通过require('assert')引入模块的方式在应用程序代码中使用。然而,断言并不是一个测试框架,也不是用来作为一个通用的断言库。
assert模块的API是锁级别的。这意味着该模块实现的方法和暴露的任何方法将不可增加或更改。
- assert(value[, message])
- assert.deepEqual(actual, expected[, message])
- assert.deepStrictEqual(actual, expected[, message])
- assert.doesNotThrow(block[, error][, message])
- assert.equal(actual, expected[, message])
- assert.fail(actual, expected, message, operator)
- assert.ifError(value)
- assert.notDeepEqual(actual, expected[, message])
- assert.notDeepStrictEqual(actual, expected[, message])
- assert.notEqual(actual, expected[, message])
- assert.notStrictEqual(actual, expected[, message])
- assert.ok(value[, message])
- assert.strictEqual(actual, expected[, message])
- assert.throws(block[, error][, message])
assert(value[, message])#
有一个别名assert.ok()
.
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"
assert.deepEqual(actual, expected[, message])#
用于深层次的比较参数actual和expected是否相等。值比较的话等效于操作符(==)。
只有自身属性是可列举订单才能被考虑。deepEqual()方法的设计不能测试对象的原型,附加符号,或不可数性质。这可能导致一些意想不到的结果。例如,下面这个例子就不会抛出AssertionError,因为Error对象的属性是不可数的。
// WARNING: This does not throw an AssertionError! assert.deepEqual(Error('a'), Error('b'));
"深度"相等意味着子对象的可列举属性也会被计算。
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); // AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } } // values of b are different assert.deepEqual(obj1, obj3); // OK, objects are equal assert.deepEqual(obj1, obj4); // AssertionError: { a: { b: 1 } } deepEqual {} // Prototypes are ignored
如果值不相等,抛出AssertionError断言错误,这个错误信息是设置的message参数。如果message参数没有定义,那么将指定一个默认的错误信息。