Getting Started
Instala Jest usando yarn
:
yarn add --dev jest
O npm
:
npm install --save-dev jest
Nota: la documentación de Jest usa comandos de yarn
, pero también puede usarse npm
. Puedes comparar los comandos de yarn
y npm
en la documentación de yarn, aquí.
Empecemos escribiendo una prueba para una función hipotética que suma dos números. Primero, crea un archivo suma.js
:
function suma(a, b) {
return a + b;
}
module.exports = suma;
Luego, crea un archivo llamado suma.test.js
. Este contendrá nuestra prueba actual:
const suma = require('./suma');
test('sumar 1 + 2 es igual a 3', () => {
expect(suma(1, 2)).toBe(3);
});
Agrega la siguiente sección a tu package.json
:
{
"scripts": {
"test": "jest"
}
}
Para terminar, ejecuta yarn test
o npm run test
y Jest imprimirá este mensaje:
PASS ./suma.test.js
✓ sumar 1 + 2 es igual a 3 (5ms)
Acabas de escribir tu primera prueba usando Jest!
Esta prueba usa expect
y toBe
para probar que dos valores son exactamente idénticos. Para aprender sobre otras cosas que Jest puede probar, mira Usando Matchers.
Ejecutando desde la línea de comandos
Puedes ejecutar Jest directamente desde la CLI (si está disponible globalmente en tu PATH
, p.e. con yarn global add jest
o npm install jest --global
) con varias opciones útiles.
Así es como puedes correr Jest en archivos que coinciden my-test
, usando config.json
como archivo de configuración y mostrar una notificación nativa del SO después de ejecutarlo:
jest my-test --notify --config=config.json
If you'd like to learn more about running jest
through the command line, take a look at the Jest CLI Options page.
Configuración Adicional
Genera un fichero de configuración básico
Based on your project, Jest will ask you a few questions and will create a basic configuration file with a short description for each option:
jest --init
Usando Babel
Para usar Babel, instala las dependencias requeridas con yarn
:
yarn add --dev babel-jest @babel/core @babel/preset-env
Configura Babel para tu versión actual de Node creando un fichero babel.config.js
en la raíz de tu proyecto:
// babel.config.js
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
La configuración ideal de Babel dependerá de tu proyecto. Consulta la documentación de Babel para tener más detalles.
Haz que tu configuración de Babel sepa que usas Jest
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.
// babel.config.js
module.exports = api => {
const isTest = api.env('test');
// Puedes usar isTest para determinar qué presets y qué plugins se usarán.
return {
// ...
};
};
Nota:
babel-jest
se instala automáticamente al instalar Jest y transforma los archivos si una configuración de babel existe en tu proyecto. Para evitar este comportamiento, puede restablecer explícitamente la opción de configuración detransform
:
// jest.config.js
module.exports = {
transform: {},
};
Babel 6 support
Jest 24 dropped support for Babel 6. We highly recommend you to upgrade to Babel 7, which is actively maintained. However, if you cannot upgrade to Babel 7, either keep using Jest 23 or upgrade to Jest 24 with babel-jest
locked at version 23, like in the example below:
"dependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-preset-env": "^1.7.0",
"jest": "^24.0.0"
}
While we generally recommend using the same version of every Jest package, this workaround will allow you to continue using the latest version of Jest with Babel 6 for now.
Usando webpack
Jest puede ser usado en proyectos que usan webpack para gestionar recursos, estilos y compilación. webpack ofrece desafíos únicos por sobre otras herramientas. Véase la guía de webpack para empezar.
Usando Parcel
Jest se puede utilizar en proyectos que utilicen parcel-bundler para administrar diferentes archivos, tales como "Assets, Styles o archivos de compilación" de manera similar a Webpack Parcel requiere cero configuración. Consulta la documentación oficial para comenzar.
Usando TypeScript
Jest supports TypeScript, via Babel. Primero, asegúrate de haber seguido las intrucciones en Usando Babel de arriba. Next, install the @babel/preset-typescript
via yarn
:
yarn add --dev @babel/preset-typescript
Then add @babel/preset-typescript
to the list of presets in your babel.config.js
.
// babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
+ '@babel/preset-typescript',
],
};
Existen algunas cosas a tener en cuenta cuando uses TypeScript con Babel. Dado que el soporte de TypeScript en Babel se limita a la transpilación, Jest no comprobará los tipos de tus tests cuando éstos se ejecuten. Si lo desea, puede utilizar ts-jest o simplemente ejecutar el compilador de TypeScript por separado (como parte del proceso de compilación)
Es posible que también desee instalar el modulo @types/jest
para la versión que este usando. Esto lo ayudará a tener una mayor compatibilidad al escribir sus pruebas con TypeScript.
For
@types/*
modules it's recommended to try to match the version of the associated module. For example, if you are using26.4.0
ofjest
then using26.4.x
of@types/jest
is ideal. In general, try to match the major (26
) and minor (4
) version as closely as possible.
yarn add --dev @types/jest