Skip to main content
assert.rejects - assert - Node documentation
function assert.rejects

Usage in Deno

import assert from "node:assert";
rejects(
block: (() => Promise<unknown>) | Promise<unknown>,
message?: string | Error,
): Promise<void>

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 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](../.././assert/~/assert.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',
  },
);
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;
  },
);
import assert from '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 throws carefully if using a string as the second argument gets considered.

Parameters

block: (() => Promise<unknown>) | Promise<unknown>
optional
message: string | Error

Return Type

Promise<void>
rejects(
block: (() => Promise<unknown>) | Promise<unknown>,
message?: string | Error,
): Promise<void>

Parameters

block: (() => Promise<unknown>) | Promise<unknown>
optional
message: string | Error

Return Type

Promise<void>