Il modulo nativo assert di Node.js fornisce un framework di asserzioni per verificare invarianti nei test e nelle validazioni a runtime.
Asserzioni Strette (Consigliato)
Importa sempre assert/strict nelle versioni moderne di Node.js per imporre l’uguaglianza stretta (===):
const assert = require('assert/strict');
// oppure import assert from 'node:assert/strict';
Veridicità & Uguaglianza
// Controllo di valore truthy
assert(val, 'Expected value to be truthy');
assert.ok(val, 'Alias di assert()');
// Uguaglianza stretta (===)
assert.equal(actual, expected);
assert.notEqual(actual, expected);
// Uguaglianza profonda stretta tra oggetti
assert.deepEqual({ a: 1, b: [2] }, { a: 1, b: [2] });
assert.notDeepEqual({ a: 1 }, { a: 2 });
Gestione Errori & Eccezioni
assert.throws()
Verifica che una funzione lanci l’errore atteso:
assert.throws(
() => {
throw new TypeError('Invalid parameter');
},
{
name: 'TypeError',
message: 'Invalid parameter'
}
);
assert.doesNotThrow()
Verifica che un blocco venga eseguito senza lanciare eccezioni non gestite:
assert.doesNotThrow(() => {
safeOperation();
});
Asserzioni Asincrone
// Verifica di rejection per le promise
await assert.rejects(
async () => {
await fetchInvalidUrl();
},
{
name: 'TypeError'
}
);
// Verifica di risoluzione positiva per le promise
await assert.doesNotReject(async () => {
await fetchValidUrl();
});