Módulo assert de Node.js

Java FileMódulos integrados 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:

const assert = require('assert');

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(true); // Pasa
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, '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); // Pasa
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({ a: 1 }, { a: 1 }); // Pasa
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 }); // Pasa
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, 2); // Pasa
assert.notEqual(1, '1'); // Lanza AssertionError

2. assert.notStrictEqual(actual, expected[, message])

Pruebaactualyexpectedsi no son estrictamente iguales (!==)。

Ejemplo

assert.notStrictEqual(1, '1'); // Pasa
assert.notStrictEqual(1, 1); // Lanza AssertionError

3. assert.throws(block[, error][, message])

Pruebablocksi una función lanza un error.

Ejemplo

assert.throws(
  () => {
    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

assert.doesNotThrow(
  () => {
    const x = 1 + 1;
  },
  Error
); // Pasa

5. assert.fail([message])

Fuerza el lanzamiento de unaAssertionError。

Ejemplo

assert.fail('Test failed'); // Lanza AssertionError: Test failed

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

function add(a, b) {
  return a + b;
}

Podemos usar elassertmódulo para escribir pruebas para ella:

Ejemplo

const assert = require('assert');

// 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

  1. 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.

  2. Modo estricto: Node.js también proporciona elassert/strictmódulo, que es laassertversión estricta del módulo, todas las comparaciones usan igualdad estricta (===)。

    const assert = require('assert/strict');
  3. Mensajes de error personalizados: Proporcionar mensajes de error claros para cada aserción ayuda a localizar rápidamente los problemas.

  4. Consideraciones de rendimiento: Aunqueassertel 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.

Java FileMódulos integrados de Node.js

Otras extensiones