当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js assert.rejects(asyncFn[, error][, message])用法及代码示例


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

添加于:v10.0.0

参数

等待 asyncFn 承诺,或者,如果 asyncFn 是一个函数,则立即调用该函数并等待返回的承诺完成。然后它将检查承诺是否被拒绝。

如果asyncFn 是一个函数并且它同步抛出一个错误,那么assert.rejects() 将返回一个带有该错误的被拒绝的Promise。如果函数没有返回承诺,assert.rejects() 将返回一个被拒绝的 Promise 并带有 ERR_INVALID_RETURN_VALUE 错误。在这两种情况下,都会跳过错误处理程序。

除了等待完成的异步性质外,其行为与 assert.throws() 相同。

如果指定,error 可以是 Class RegExp 、验证函数、将测试每个属性的对象,或者将测试每个属性以包含不可枚举的错误实例 messagename 属性。

如果指定,如果asyncFn 拒绝失败,message 将是由 AssertionError 提供的消息。

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。这可能导致easy-to-miss 错误。如果考虑使用字符串作为第二个参数,请仔细阅读 assert.throws() 中的示例。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 assert.rejects(asyncFn[, error][, message])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。