Professional Documents
Culture Documents
1 assert (断言)
1 assert (断言)
0 文档
返回文档首页
目录
assert (断言)
assert(value[, message])
assert.deepEqual(actual, expected[, message])
assert.deepStrictEqual(actual, expected[, message])
assert.doesNotThrow(block[, error][, message])
assert.equal(actual, expected[, message])
assert (断言) #
查看英文版 / 参与翻译
稳定性: 3 - 锁定的
assert(value[, message]) #
查看英文版 / 参与翻译
新增于: v0.5.9
assert.ok() 的别名。
assert(true);
// 通过
assert(1);
// 通过
assert(false);
// 抛出 "AssertionError: false == true"
assert(0);
// 抛出 "AssertionError: 0 == true"
assert(false, '不是真值');
// 抛出 "AssertionError: 不是真值"
新增于: v0.1.21
// 注意:这不会抛出 AssertionError!
assert.deepEqual(Error('a'), Error('b'));
深度相等意味着子对象的可枚举的自身属性也会被比较:
const obj1 = {
a : {
b : 1
}
};
const obj2 = {
a : {
b : 2
}
};
const obj3 = {
a : {
b : 1
}
};
const obj4 = Object.create(obj1);
assert.deepEqual(obj1, obj1);
// 通过,对象与自身相等
assert.deepEqual(obj1, obj2);
// 抛出 AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }
// b 的值不同
assert.deepEqual(obj1, obj3);
// 通过,两个对象相等
assert.deepEqual(obj1, obj4);
// 抛出 AssertionError: { a: { b: 1 } } deepEqual {}
// 原型会被忽略
新增于: v1.2.0
assert.deepEqual({a:1}, {a:'1'});
// 通过,因为 1 == '1'
assert.deepStrictEqual({a:1}, {a:'1'});
// 抛出 AssertionError: { a: 1 } deepStrictEqual { a: '1' }
// 因为 1 !== '1' 使用全等运算符
新增于: v0.1.21
以下例子会抛出 TypeError,因为在断言中没有匹配的错误类型:
assert.doesNotThrow(
() => {
throw new TypeError('错误');
},
SyntaxError
);
assert.doesNotThrow(
() => {
throw new TypeError('错误');
},
TypeError
);
assert.doesNotThrow(
() => {
throw new TypeError('错误');
},
TypeError,
'抛出错误'
);
// 抛出 AssertionError: Got unwanted exception (TypeError). 抛出错误
新增于: v0.1.21
assert.equal(1, 1);
// 通过,1 == 1
assert.equal(1, '1');
// 通过,1 == '1'
assert.equal(1, 2);
// 抛出 AssertionError: 1 == 2
assert.equal({a: {b: 1}}, {a: {b: 1}});
// 抛出 AssertionError: { a: { b: 1 } } == { a: { b: 1 } }
新增于: v0.1.21
assert.ifError(value) #
查看英文版 / 参与翻译
新增于: v0.1.97
assert.ifError(0);
// 通过
assert.ifError(1);
// 抛出 1
assert.ifError('error');
// 抛出 'error'
assert.ifError(new Error());
// 抛出 Error
新增于: v0.1.21
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);
// 通过,obj1 与 obj2 不深度相等
assert.notDeepEqual(obj1, obj3);
// 抛出 AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
assert.notDeepEqual(obj1, obj4);
// 通过,obj1 与 obj4 不深度相等
新增于: v1.2.0
assert.notDeepEqual({a:1}, {a:'1'});
// 抛出 AssertionError: { a: 1 } notDeepEqual { a: '1' }
assert.notDeepStrictEqual({a:1}, {a:'1'});
// 通过
新增于: v0.1.21
使用不等运算符( != )测试是否不相等。
assert.notEqual(1, 2);
// 通过
assert.notEqual(1, 1);
// 抛出 AssertionError: 1 != 1
assert.notEqual(1, '1');
// 抛出 AssertionError: 1 != '1'
新增于: v0.1.21
assert.notStrictEqual(1, 2);
// 通过
assert.notStrictEqual(1, 1);
// 抛出 AssertionError: 1 !== 1
assert.notStrictEqual(1, '1');
// 通过
assert.ok(value[, message]) #
查看英文版 / 参与翻译
新增于: v0.1.21
如果 value 不为真值,则抛出一个带有 message 属性的 AssertionError ,其中 message 属性的值等于传入的 message 参数的
值。 如果 message 参数为 undefined ,则赋予默认的错误信息。
assert.ok(true);
// 通过
assert.ok(1);
// 通过
assert.ok(false);
// 抛出 "AssertionError: false == true"
assert.ok(0);
// 抛出 "AssertionError: 0 == true"
assert.ok(false, '不是真值');
// 抛出 "AssertionError: 不是真值"
新增于: v0.1.21
assert.strictEqual(1, 2);
// 抛出 AssertionError: 1 === 2
assert.strictEqual(1, 1);
// 通过
assert.strictEqual(1, '1');
// 抛出 AssertionError: 1 === '1'
新增于: v0.1.21
期望 block 函数抛出错误。
例子,使用构造函数验证实例:
assert.throws(
() => {
throw new Error('错误信息');
},
Error
);
assert.throws(
() => {
throw new Error('错误信息');
},
/错误/
);
例子,自定义的错误验证函数:
assert.throws(
() => {
throw new Error('错误信息');
},
function(err) {
if ( (err instanceof Error) && /错误/.test(err) ) {
return true;
}
},
'不是期望的错误'
);
// 这是错误的!不要这么做!
assert.throws(myFunction, '错误', '没有抛出期望的信息');
// 应该这么做。
assert.throws(myFunction, /错误/, '没有抛出期望的信息');