Módulo assert de Node.js
En Node.js, elassertmódulo es una biblioteca de herramientas integrada para escribir pruebas unitarias. Proporciona una serie de funciones de aserción para verificar si el comportamiento del código cumple con lo esperado. Si una aserción falla,assertel módulo lanzaráAssertionErroruna excepción.
assertEl módulo es muy adecuado para usarse en las etapas de desarrollo y pruebas, y puede ayudar a los desarrolladores a detectar rápidamente problemas en el código.
¿Cómo usar el módulo assert?
Para usarassertel módulo, primero hay que importarlo:
Métodos básicos de aserción
1. assert.ok(value[, message])
assert.ok()Es el método de aserción más básico; compruebavaluesi es un valor verdadero (truthy). Sivaluees un valor falso (falsy), entonces lanzaAssertionError。
Ejemplo
assert.ok(1); // Pasa
assert.ok(false); // Lanza AssertionError
assert.ok(0, 'value is falsy'); // Lanza AssertionError: value is falsy
2. assert.equal(actual, expected[, message])
assert.equal()Usando==el operador para compararactualyexpectedsi son iguales (igualdad laxa).
Ejemplo
assert.equal(1, '1'); // Pasa
assert.equal(1, 2); // Lanza AssertionError
3. assert.strictEqual(actual, expected[, message])
assert.strictEqual()Usando===el operador para compararactualyexpectedsi son estrictamente iguales.
Ejemplo
assert.strictEqual(1, '1'); // Lanza AssertionError
4. assert.deepEqual(actual, expected[, message])
assert.deepEqual()Se usa para comparar si el contenido de dos objetos o arrays es igual (comparación recursiva).
Ejemplo
assert.deepEqual([1, 2], [1, 2]); // Pasa
assert.deepEqual({ a: 1 }, { a: '1' }); // Pasa (comparación laxa)
5. assert.deepStrictEqual(actual, expected[, message])
assert.deepStrictEqual()Similar adeepEqual, pero usa comparación estricta (===)。
Ejemplo
assert.deepStrictEqual({ a: 1 }, { a: '1' }); // Lanza AssertionError
Otros métodos de aserción comunes
1. assert.notEqual(actual, expected[, message])
Pruebaactualyexpectedsi no son iguales (!=)。
Ejemplo
assert.notEqual(1, '1'); // Lanza AssertionError
2. assert.notStrictEqual(actual, expected[, message])
Pruebaactualyexpectedsi no son estrictamente iguales (!==)。
Ejemplo
assert.notStrictEqual(1, 1); // Lanza AssertionError
3. assert.throws(block[, error][, message])
Pruebablocksi una función lanza un error.
Ejemplo
() => {
throw new Error('Wrong value');
},
Error
); // Pasa
assert.throws(
() => {
throw new Error('Wrong value');
},
/Wrong/
); // Pasa (la expresión regular coincide con el mensaje de error)
4. assert.doesNotThrow(block[, error][, message])
Pruebablocksi una función no lanza un error.
Ejemplo
() => {
const x = 1 + 1;
},
Error
); // Pasa
5. assert.fail([message])
Fuerza el lanzamiento de unaAssertionError。
Ejemplo
Ejemplo de aplicación práctica
Supongamos que tenemos una función simpleadd, que se usa para calcular la suma de dos números:
Ejemplo
return a + b;
}
Podemos usar elassertmódulo para escribir pruebas para ella:
Ejemplo
// Prueba el caso normal
assert.strictEqual(add(1, 2), 3, '1 + 2 should be 3');
assert.strictEqual(add(-1, 1), 0, '-1 + 1 should be 0');
// Prueba el caso límite
assert.strictEqual(add(0, 0), 0, '0 + 0 should be 0');
assert.strictEqual(add(1.5, 2.5), 4, '1.5 + 2.5 should be 4');
// Prueba el caso de error
assert.throws(
() => add('1', 2),
TypeError,
'Adding string to number should throw TypeError'
);
Notas
Entorno de producción:
assertEl módulo se usa principalmente en entornos de desarrollo y pruebas; no se recomienda usarlo en producción porque un fallo de aserción puede provocar que el programa se bloquee.Modo estricto: Node.js también proporciona el
assert/strictmódulo, que es laassertversión estricta del módulo, todas las comparaciones usan igualdad estricta (===)。const assert = require('assert/strict');Mensajes de error personalizados: Proporcionar mensajes de error claros para cada aserción ayuda a localizar rápidamente los problemas.
Consideraciones de rendimiento: Aunque
assertel módulo es muy conveniente, debe usarse con precaución en código crítico para el rendimiento, porque las comprobaciones de aserción añaden una sobrecarga adicional.
Resumen
assertRecuerda que, después de completar el desarrollo, deberías, con un marco de pruebas más profesional (como Mocha, Jest, etc.), reemplazarassertel módulo para realizar pruebas más completas.
Módulos integrados de Node.js