Wbudowany moduł assert w Node.js dostarcza mechanizm asercji do sprawdzania niezmienników w testach oraz walidacji w czasie wykonania.
Ścisłe asercje (Zalecane)
W nowoczesnym Node.js zawsze importuj assert/strict, aby wymusić ścisłą równość (===):
const assert = require('assert/strict');
// lub import assert from 'node:assert/strict';
Prawdziwość i równość
// Sprawdzenie wartości prawdziwej (truthy)
assert(val, 'Expected value to be truthy');
assert.ok(val, 'Alias dla assert()');
// Ścisła równość (===)
assert.equal(actual, expected);
assert.notEqual(actual, expected);
// Ścisła głęboka równość obiektów
assert.deepEqual({ a: 1, b: [2] }, { a: 1, b: [2] });
assert.notDeepEqual({ a: 1 }, { a: 2 });
Obsługa błędów i wyjątków
assert.throws()
Sprawdza, czy funkcja rzuca oczekiwany błąd:
assert.throws(
() => {
throw new TypeError('Invalid parameter');
},
{
name: 'TypeError',
message: 'Invalid parameter'
}
);
assert.doesNotThrow()
Sprawdza, czy blok wykonuje się bez nieobsłużonego wyjątku:
assert.doesNotThrow(() => {
safeOperation();
});
Asercje asynchroniczne
// Weryfikacja odrzucenia (rejection) dla obietnic
await assert.rejects(
async () => {
await fetchInvalidUrl();
},
{
name: 'TypeError'
}
);
// Weryfikacja pomyślnego rozwiązania obietnicy
await assert.doesNotReject(async () => {
await fetchValidUrl();
});