Tutorial de Jasmine Framework: pruebas unitarias con ejemplo
⚡ Resumen inteligente
Jasmine es la impulsada por el comportamiento JavaMarco de pruebas de scripts que ejecuta pruebas unitarias de Node.js sin navegador ni DOM, utilizando bloques de descripción, especifica y espera comparadores para verificar que cada función exportada se comporta como se documenta.
¿Qué es JasmineJS?
Jasmine es de código abierto y el más popular. JavaMarco de prueba de biblioteca de scripts para probar cualquier tipo de JavaAplicación de script. Jasmine sigue el procedimiento de Desarrollo Impulsado por el Comportamiento (BDD) para garantizar que cada línea de JavaLa declaración del script se prueba unitariamente de forma adecuada.
¿Para qué se utiliza el marco Jasmine?
Las pruebas son un elemento clave para cualquier aplicación. Para las pruebas unitarias de Node.js, el marco disponible para las pruebas se llama Jasmine. A principios de 2000, había un marco para las pruebas. JavaScript aplicaciones llamadas JsUnit. Later Este marco se actualizó y ahora se conoce como Jasmine.
Jasmine ayuda en automatizado. Examen de la unidad, algo que se ha convertido en una práctica bastante clave cuando se desarrollanping y el despliegue de aplicaciones web modernas.
En este tutorial de Jasmine, aprenderá cómo configurar su entorno con Jasmine y cómo ejecutar pruebas de Jasmine para su primera aplicación Node.js.
Jasmine para probar aplicaciones Node.js
Jazmín es un Desarrollo impulsado por el comportamiento (BDD) marco de prueba para JavaGuión. Lo hace No confiar en navegadores, DOM o cualquier JavaMarco de scripts. Por lo tanto, es adecuado para sitios web, Node.js proyectos, o en cualquier lugar que JavaEl script se puede ejecutar. Para comenzar a utilizar Jasmine, primero debe descargar e instalar los módulos Jasmine necesarios.
Cómo configurar el entorno de prueba de Jasmine
A continuación, en este tutorial de Jasmine para Node.js, deberá inicializar su entorno e inspeccionar el archivo de configuración de Jasmine. Los siguientes pasos muestran cómo configurar Jasmine en su entorno.
Paso 1) Instalar módulos NPM
Necesita Instalar NPM Módulo jasmine para usar el framework Jasmine dentro de una aplicación Node. Para instalar el módulo jasmine-node, ejecute el siguiente comando.
npm install jasmine-node
Nota de versión (2026): El comando histórico anterior todavía funciona, pero el nodo jazmín El módulo está en modo de mantenimiento e incluye Jasmine 1.3, así que consérvelo solo para proyectos heredados. El nuevo trabajo de Node.js instala el módulo mantenido. Jasmine CLI como dependencia de desarrollo y la llama a través de npx:
npm install --save-dev jasmine npx jasmine init
Jazmín 6.x es la línea principal actual y es compatible con Node.js 20, 22 y 24, y Node.js 24 es la versión LTS activa en 2026.
Paso 2) Inicializar el entorno Jasmine
Inicializando el proyecto: al hacer esto, Jasmine crea un directorio de especificaciones y un archivo JSON de configuración. El directorio de especificaciones se utiliza para almacenar todos tus archivos de prueba. De esta manera, Jasmine sabrá dónde están todas tus pruebas y podrá ejecutarlas según corresponda. JSON Este archivo se utiliza para almacenar información de configuración específica sobre Jasmine.
Para inicializar el entorno de Jasmine, ejecute el siguiente comando.
jasmine init
Paso 3) Inspeccione su archivo de configuración.
El archivo de configuración se almacenará en la carpeta spec/support como jasmine.json. Este archivo enumera los archivos fuente y los archivos de especificaciones que le gustaría que incluyera el corredor Jasmine.
La siguiente captura de pantalla muestra un ejemplo típico del archivo jasmine.json para Jasmine.
- Tenga en cuenta que el directorio de especificaciones se especifica aquí. Como se señaló anteriormente, cuando se ejecuta jasmine, busca todas las pruebas en este directorio.
- Lo siguiente a tener en cuenta es el parámetro spec_files: esto indica que, independientemente de los archivos de prueba que se creen, se les debe agregar la palabra clave "spec".
Nota de configuración: En Jasmine 6.x, el mismo archivo también acepta ayudantes, que se cargan una vez antes de cada especificación, y un env Opciones de retención de bloques como random y stopSpecOnExpectationFailure. El patrón predeterminado spec_files es **/*[sS]spec.?(m)jsy se puede pasar un archivo diferente con –config o el RUTA_DE_CONFIGURACIÓN_DE_JASMINE variable.
A continuación, en este tutorial del marco de Jasmine, aprenderemos cómo usar Jasmine para probar aplicaciones Node.js.
Cómo utilizar Jasmine para probar aplicaciones Node.js
Para utilizar las pruebas unitarias de Jasmine para aplicaciones Node.js, se deben seguir una serie de pasos.
En el ejemplo que se muestra a continuación, definiremos un módulo que suma dos números que deben ser probados. Luego, definiremos un archivo de código aparte con el código de prueba y utilizaremos Jasmine para probar la función de suma.
Paso 1) Defina el código que se debe probar. Vamos a definir una función que sumará dos números y devolverá el resultado. Este código se escribirá en un archivo llamado “Add.js”.
La captura de pantalla que aparece a continuación muestra el módulo Add.js terminado, y el mismo código se repite como texto debajo.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Explicación
- La palabra clave "exportaciones" se utiliza para garantizar que otros archivos puedan acceder a la funcionalidad definida en este archivo.
- Luego estamos definiendo una función llamada "AddNumber". Esta función está definida para tomar 2 parámetros, a y b. La función se agrega al módulo "exportaciones" para convertirla en una función pública a la que puedan acceder otros módulos de la aplicación.
- Finalmente estamos haciendo que nuestra función devuelva el valor agregado de los parámetros.
Paso 2) A continuación, necesitamos definir nuestro código de prueba de Jasmine, que se utilizará para probar nuestra función "Agregar" en el archivo Add.js. El siguiente código debe colocarse en un archivo llamado agregar-spec.js.
Nota: : La palabra 'spec' debe agregarse al archivo de prueba para que Jasmine pueda detectarla.
La captura de pantalla que aparece a continuación muestra el mismo archivo de especificaciones abierto en un editor.
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code Explicación
- Primero debemos incluir nuestro archivo Add.js para poder probar la función 'AddNumber' en este archivo.
- Ahora estamos creando nuestro módulo de prueba. La primera parte del módulo de prueba es describir un método que básicamente le da un nombre a nuestra prueba. En este caso, el nombre de nuestra prueba es “Suma”.
- Lo siguiente es dar una descripción de nuestra prueba utilizando el método "it".
- Ahora invocamos nuestro método AddNumber y le enviamos dos parámetros: 5 y 6. Estos se pasarán a nuestro método AddNumber en el archivo Add.js. El valor de retorno se almacena en una variable llamada value.
- El último paso es realizar la comparación o nuestra prueba real. Como esperamos que el valor devuelto por la función AddNumber sea 11, definimos esto usando el método expect(value).toBe(el valor esperado).
Resultado
- Para ejecutar la prueba, es necesario ejecutar el comando jasmine.
- La siguiente captura de pantalla muestra que, tras ejecutar el comando jasmine, se detectará la existencia de una prueba llamada add-spec.js y se ejecutará. Si se produce algún error, se mostrará en el mensaje correspondiente.
El ejemplo Add utiliza un único comparador, pero Jasmine incluye un conjunto completo. La tabla a continuación enumera los que cubren casi todas las aserciones que escribirás.
Combinaciones de jazmín que más usarás
Un matcher es la comparación que sigue a expect(). Encadena .not antes de cualquier matcher para invertirlo, como en expect(value).not.toBe(11).
| emparejador | Lo que comprueba | Uso típico |
| ser | Identidad estricta, la misma comparación que === | esperar(valor).toBe(11) |
| A igual | Igualdad profunda de objetos y matrices | expect(user).toEqual({id: 1}) |
| contener | Pertenencia dentro de una matriz o una cadena | expect(files).toContain('add-spec.js') |
| por definir | El valor no es indefinido | expect(app.AddNumber).toBeDefined() |
| lanzar | La función encapsulada genera un error. | expect(callAdd).toThrow() |
| haber sido llamado | Se recurrió a un espía al menos una vez. | expect(logger.write).toHaveBeenCalled() |
Dos hábitos facilitan la comprensión de los errores. Usa `toBe` solo para tipos primitivos y referencias idénticas, ya que dos objetos con el mismo contenido nunca son iguales (===). Usa `toEqual` para estructuras y añade `toHaveBeenCalledWith` cuando los argumentos sean tan importantes como la llamada en sí.
Montaje, desmontaje y espías en Jasmine
Las suites de trabajo reales necesitan estado compartido y copias de seguridad para colaboradores lentos. Jasmine proporciona ambas sin necesidad de paquetes adicionales.
- antes de cada y después de cada Ejecutar antes y después de cada especificación dentro de un bloque describe, que es el lugar natural para reconstruir los fixtures.
- antes de todo y después de todo Ejecútalos una sola vez para toda la manzana, así que resérvalos para trabajos costosos como abrir una conexión.
- spyOn(objeto, 'método') reemplaza un método real con un tracrey doble; agregue .and.returnValue() para controlar lo que responde.
- jasmine.createSpy('name') Crea un objeto doble independiente para una función de devolución de llamada que no tiene ningún objeto al que adjuntarse.
- Especificaciones asíncronas Puede declararse como asíncrono y esperarse, puede devolver una promesa o puede aceptar una función de devolución de llamada que debe ejecutarse exactamente una vez.
Los espías se reinician entre especificaciones, por lo que una suite nunca filtra un método simulado a la siguiente prueba. Ese aislamiento es lo que hace que una especificación fallida apunte a un defecto en lugar de a una cadena de ellos, que es la misma disciplina descrita en el examen de la unidad fundamentos.
Jazmín vs Mocha vs Broma
Jasmine es uno de los tres frameworks que dominan JavaSe trata de realizar pruebas de scripts, y la elección suele depender de la cantidad de cableado que se desee tener.
| Aspecto | Jazmín | Mocha | Broma |
| Aserciones | Construido en | Añadido, normalmente Chai | Construido en |
| Espías y burlas | Construido en | Añadido, normalmente Sinon | Construido en |
| Ejecución | Serial | Serial | Paralelo a través de procesos |
| Snapshots | No | No | Sí: |
| Hogar común | Angular, Node.js puro | Pilas de Node.js flexibles | React y empaquetadores modernos |
Toma Mocha cuando quieras ensamblar tu propia pila de aserciones y simulaciones, y Broma Cuando las ejecuciones paralelas, la cobertura y las instantáneas importan más que el control de la configuración. Jasmine sigue siendo la opción más ligera que aún llega completa, razón por la cual sigue siendo común en pruebas de automatización suites.




