assert.rejects(asyncFn[, error][, message])


新增于: v10.0.0

等待 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 可以是 ClassRegExp、验证函数、每个属性将被测试的对象,或者每个属性(包括不可枚举的 messagename 属性)将被测试的错误实例。

\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.

AltStyle によって変換されたページ (->オリジナル) /