asyncFn
{Function|Promise}error
{RegExp|Function|Object|Error}message
{string}
等待 asyncFn
Promise,或者,如果 asyncFn
是一个函数,则立即调用该函数并等待返回的 Promise 完成。
然后它将检查 Promise 是否被拒绝。
如果 asyncFn
是一个函数并且它同步抛出一个错误,则 assert.rejects()
将返回一个带有该错误的被拒绝的 Promise
。
如果函数未返回 Promise,则 assert.rejects()
将返回一个被拒绝的 Promise
,其中包含 [ERR_INVALID_RETURN_VALUE
] 错误。
在这两种情况下都会跳过错误处理函数。
除了等待的异步性质之外,完成行为与 [assert.throws()
] 完全相同。
如果指定,则 error
可以是 [Class
]、[RegExp
]、验证函数、将测试每个属性的对象、或者将测试每个属性的错误实例(包括不可枚举的 message
和 name
属性)。
如果指定 message
,则当 asyncFn
无法拒绝时 message
将是 [AssertionError
] 提供的消息。
(async () => {
await assert.rejects(
async () => {
throw new TypeError('错误值');
},
{
name: 'TypeError',
message: '错误值'
}
);
})();
(async () => {
await assert.rejects(
async () => {
throw new TypeError('错误值');
},
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, '错误值');
return true;
}
);
})();
assert.rejects(
Promise.reject(new Error('错误值')),
Error
).then(() => {
// ...
});
注意,error
不能是字符串。
如果提供了一个字符串作为第二个参数,则假定 error
被忽略,而字符串将用于 message
。
这可能导致容易错过的错误。
如果考虑使用字符串作为第二个参数,请仔细阅读 [assert.throws()
] 中的示例。