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


    等待 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.

    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.

    Besides the async nature to await the completion behaves identically to assert.throws().

    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.

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