Primeros pasos
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Instala Jest usando tu gestor de paquetes favorito:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev jest
yarn add --dev jest
pnpm add --save-dev jest
bun add --dev jest
Comencemos escribiendo una prueba para una función hipotética que suma dos números. Primero, crea un archivo sum.js:
function sum(a, b) {
return a + b;
}
module.exports = sum;
Luego, crea un archivo llamado sum.test.js. Este contendrá nuestra prueba real:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Agrega la siguiente sección a tu package.json:
{
"scripts": {
"test": "jest"
}
}
Finalmente, ejecuta yarn test o npm test y Jest mostrará este mensaje:
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
¡Acabas de escribir tu primera prueba con Jest exitosamente!
Esta prueba usó expect y toBe para verificar que dos valores fueran exactamente idénticos. Para aprender sobre otras funcionalidades de Jest, consulta Uso de comparadores.
Ejecución desde línea de comandos
Puedes ejecutar Jest directamente desde la CLI (si está disponible globalmente en tu PATH, por ejemplo mediante yarn global add jest o npm install jest --global) con varias opciones útiles.
Así puedes ejecutar Jest en archivos que coincidan con my-test, usando config.json como archivo de configuración y mostrando una notificación nativa del sistema operativo al finalizar:
jest my-test --notify --config=config.json
Si quieres aprender más sobre cómo ejecutar jest desde línea de comandos, visita la página Opciones CLI de Jest.
Configuración adicional
Generar un archivo de configuración básico
Según tu proyecto, Jest te hará algunas preguntas y creará un archivo de configuración básico con una breve descripción para cada opción:
- npm
- Yarn
- pnpm
- Bun
npm init jest@latest
yarn create jest
pnpm create jest
bunx create-jest
Usar Babel
Para usar Babel, instala las dependencias requeridas:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev babel-jest @babel/core @babel/preset-env
yarn add --dev babel-jest @babel/core @babel/preset-env
pnpm add --save-dev babel-jest @babel/core @babel/preset-env
bun add --dev babel-jest @babel/core @babel/preset-env
Configura Babel para tu versión actual de Node creando un archivo babel.config.js en la raíz de tu proyecto:
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
La configuración ideal para Babel dependerá de tu proyecto. Consulta la documentación de Babel para más detalles.
Making your Babel config jest-aware
Jest will set process.env.NODE_ENV to 'test' if it's not set to something else. You can use that in your configuration to conditionally setup only the compilation needed for Jest, e.g.
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.
return {
// ...
};
};
babel-jest is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. To avoid this behavior, you can explicitly reset the transform configuration option:
module.exports = {
transform: {},
};
Uso con bundlers
Normalmente no necesitas hacer nada especial para trabajar con diferentes bundlers, excepto si tienes algún plugin o configuración que genere archivos o tenga reglas personalizadas de resolución de archivos.
Usar webpack
Jest puede usarse en proyectos que emplean webpack para gestionar activos, estilos y compilación. Webpack presenta desafíos únicos respecto a otras herramientas. Consulta la guía de webpack para comenzar.
Usar Vite
Jest no es compatible con Vite debido a incompatibilidades con el sistema de plugins de Vite.
Existen ejemplos de integración entre Jest y Vite en la biblioteca vite-jest. Sin embargo, esta biblioteca no es compatible con versiones de Vite posteriores a 2.4.2.
Una alternativa es Vitest que cuenta con una API compatible con Jest.
Usar Parcel
Jest puede usarse en proyectos que utilizan parcel-bundler para gestionar activos, estilos y compilación, similar a webpack. Parcel no requiere configuración. Consulta la documentación oficial para comenzar.
Usar TypeScript
Mediante babel
Jest admite TypeScript mediante Babel. Primero, asegúrate de haber seguido las instrucciones sobre cómo usar Babel. Luego, instala @babel/preset-typescript:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
bun add --dev @babel/preset-typescript
Luego agrega @babel/preset-typescript a la lista de presets en tu babel.config.js.
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
Sin embargo, existen algunas limitaciones al usar TypeScript con Babel. Debido a que el soporte de TypeScript en Babel es puramente de transpilación, Jest no verificará los tipos durante la ejecución de tus pruebas. Si necesitas esta funcionalidad, puedes usar ts-jest o ejecutar el compilador de TypeScript tsc por separado (o como parte de tu proceso de compilación).
Vía ts-jest
ts-jest es un preprocesador de TypeScript con soporte de source maps para Jest que te permite probar proyectos escritos en TypeScript.
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev ts-jest
yarn add --dev ts-jest
pnpm add --save-dev ts-jest
bun add --dev ts-jest
Para que Jest transpile TypeScript con ts-jest, también puedes necesitar crear un archivo de configuración.
Definiciones de tipos
Existen dos formas de tipar las APIs globales de Jest para archivos de prueba escritos en TypeScript.
Puedes usar las definiciones de tipos incluidas con Jest, que se actualizan con cada versión. Instala el paquete @jest/globals:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @jest/globals
yarn add --dev @jest/globals
pnpm add --save-dev @jest/globals
bun add --dev @jest/globals
E importa las APIs desde allí:
import {describe, expect, test} from '@jest/globals';
import {sum} from './sum';
describe('sum module', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
});
Consulta la documentación adicional sobre el uso de describe.each/test.each y mock functions.
Alternativamente, puedes instalar el paquete @types/jest. Proporciona tipos para los globales de Jest sin necesidad de importarlos.
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @types/jest
yarn add --dev @types/jest
pnpm add --save-dev @types/jest
bun add --dev @types/jest
:::información
@types/jest es una librería de terceros mantenida en DefinitelyTyped, por lo que las funciones más recientes de Jest pueden no estar cubiertas aún. Intenta mantener versiones compatibles de Jest y @types/jest. Por ejemplo, si usas Jest 27.4.0, instalar la versión 27.4.x de @types/jest es ideal.
:::
Usando ESLint
Jest puede usarse con ESLint sin configuración adicional siempre que importes los helpers globales de Jest (describe, it, etc.) desde @jest/globals antes de usarlos en tu archivo de prueba. Esto evita errores no-undef de ESLint, que no reconoce los globales de Jest.
Si prefieres evitar estas importaciones, configura tu entorno ESLint para soportar estos globales añadiendo el entorno jest:
import {defineConfig} from 'eslint/config';
import globals from 'globals';
export default defineConfig([
{
files: ['**/*.js'],
languageOptions: {
globals: {
...globals.jest,
},
},
rules: {
'no-unused-vars': 'warn',
'no-undef': 'warn',
},
},
]);
O usa eslint-plugin-jest, que tiene un efecto similar:
{
"overrides": [
{
"files": ["tests/**/*"],
"plugins": ["jest"],
"env": {
"jest/globals": true
}
}
]
}