node:assert and node:assert/strict provide Node’s assertion functions,
from ok and deepStrictEqual to throws, rejects, match and partialDeepStrictEqual.
Example
js
// assert.mjs
import assert from "node:assert/strict";
assert.deepEqual({ ids: [1, 2] }, { ids: [1, 2] });
assert.throws(() => JSON.parse("{"), SyntaxError);
await assert.rejects(Promise.reject(new Error("nope")), /nope/);
try {
assert.equal(1 + 1, 3);
} catch (error) {
console.log(error.name, error.code, error.actual, error.expected);
}
utf-8 · js · Lines: 12
elide run assert.mjs prints:
text
AssertionError ERR_ASSERTION 2 3
utf-8 · text · Lines: 1
Differences from Node
assert.Assertis not a constructor.- Loose
deepEqualtreatsnullandundefinedas different, and compares proxies differently. - A symbol
message, or a number asexpectedinthrows(), raisesAssertionErrorinstead ofERR_INVALID_ARG_TYPE. AssertionError.operatorholds the method name (strictEqual), not a symbol (===).
Reference
Status: Partial · 7 of 13 suite tests pass (53.8%) · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
ok() | function | Full | Tests if value is truthy |
equal() | function | Full | Tests shallow equality between actual and expected using == |
notEqual() | function | Full | Tests shallow inequality between actual and expected using != |
strictEqual() | function | Full | Tests strict equality between actual and expected using === |
notStrictEqual() | function | Full | Tests strict inequality between actual and expected using !== |
deepEqual() | function | Full | Tests for deep equality between actual and expected using abstract equality (==) for leaf comparisons |
deepStrictEqual() | function | Full | Tests for deep strict equality between actual and expected using strict equality (===) for leaf… |
notDeepEqual() | function | Full | Tests that actual is NOT deeply equal to expected (abstract equality) |
notDeepStrictEqual() | function | Full | Tests that actual is NOT deeply strictly equal to expected |
throws() | function | Full | Expects the function fn to throw an error |
doesNotThrow() | function | Full | Asserts that the function fn does not throw an error |
rejects() | function | Full | Awaits the asyncFn promise (or calls it if it’s a function) and expects it to reject |
doesNotReject() | function | Full | Awaits the asyncFn promise (or calls it if it’s a function) and expects it NOT to reject |
fail() | function | Full | Throws an AssertionError unconditionally |
ifError() | function | Full | If value is truthy (not null/undefined/false), throws it |
match() | function | Full | Expects string to match the regular expression regexp |
doesNotMatch() | function | Full | Expects string NOT to match the regular expression regexp |
Not implemented
Assert, assert/strict.Assert.
Tests: node-api node:assert: 7 pass, 6 fail, 0 error, 1 skipped. Failing: test-assert-async.js, test-assert-class-destructuring.js, test-assert-class.js, test-assert-deep.js, test-assert-esm-cjs-message-verify.js, test-assert.js.