assert.rejects(asyncFn[, error][, message])
-
asyncFn<Function> | <Promise> -
error<RegExp> | <Function> | <Object> | <Error> -
message<string> -
返回:<Promise>
¥Returns: <Promise>
等待 asyncFn promise,或者,如果 asyncFn 是函数,则立即调用该函数并等待返回的 promise 完成。然后将检查 promise 是否被拒绝。
¥Awaits the asyncFn promise or, if asyncFn is a function, immediately
calls the function and awaits the returned promise to complete. It will then
check that the promise is rejected.
如果 asyncFn 是函数并且它同步抛出错误,则 assert.rejects() 将返回使用使用该错误拒绝的 Promise。如果函数没有返回 promise,则 assert.rejects() 将返回使用 ERR_INVALID_RETURN_VALUE 错误拒绝的 Promise。在这两种情况下,都会跳过错误句柄。
¥If asyncFn is a function and it throws an error synchronously,
assert.rejects() will return a rejected Promise with that error. If the
function does not return a promise, assert.rejects() will return a rejected
Promise with an ERR_INVALID_RETURN_VALUE error. In both cases the error
handler is skipped.
除了等待完成的异步性质外,其行为与 assert.throws() 相同。
¥Besides the async nature to await the completion behaves identically to
assert.throws().
如果指定,则 error 可以是 Class、<RegExp>、验证函数、每个属性将被测试的对象,或者每个属性(包括不可枚举的 message 和 name 属性)将被测试的错误实例。
¥If specified, error can be a Class, <RegExp>, a validation function,
an object where each property will be tested for, or an instance of error where
each property will be tested for including the non-enumerable message and
name properties.
如果指定,则 message 将是 AssertionError 提供的消息(如果 asyncFn 没有被拒绝)。
¥If specified, message will be the message provided by the AssertionError
if the asyncFn fails to reject.
import assert from 'node:assert/strict';
await assert.rejects(
async () => {
throw new TypeError('Wrong value');
},
{
name: 'TypeError',
message: 'Wrong value',
},
);const assert = require('node:assert/strict');
(async () => {
await assert.rejects(
async () => {
throw new TypeError('Wrong value');
},
{
name: 'TypeError',
message: 'Wrong value',
},
);
})();import assert from 'node:assert/strict';
await assert.rejects(
async () => {
throw new TypeError('Wrong value');
},
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, 'Wrong value');
return true;
},
);const assert = require('node:assert/strict');
(async () => {
await assert.rejects(
async () => {
throw new TypeError('Wrong value');
},
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, 'Wrong value');
return true;
},
);
})();import assert from 'node:assert/strict';
assert.rejects(
Promise.reject(new Error('Wrong value')),
Error,
).then(() => {
// ...
});const assert = require('node:assert/strict');
assert.rejects(
Promise.reject(new Error('Wrong value')),
Error,
).then(() => {
// ...
});error 不能是字符串。如果提供字符串作为第二个参数,则假定 error 被省略,而该字符串将用于 message。这可能会导致容易遗漏的错误。如果考虑使用字符串作为第二个参数,则请仔细读阅 assert.throws() 中的示例。
¥error cannot be a string. If a string is provided as the second
argument, then error is assumed to be omitted and the string will be used for
message instead. This can lead to easy-to-miss mistakes. Please read the
example in assert.throws() carefully if using a string as the second
argument gets considered.