當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。