Premiers pas
Installez Jest en utilisant votre gestionnaire de paquets favori :
- npm
- Yarn
- pnpm
npm install --save-dev jest
yarn add --dev jest
pnpm add --save-dev jest
Commençons par écrire un test pour une hypothétique fonction qui additionne deux nombres. Tout d’abord, créez un fichier sum.js
:
function sum(a, b) {
return a + b;
}
module.exports = sum;
Ensuite, créez un fichier nommé sum.test.js
. Il s'agit de notre test actuel :
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Ajoutez la section suivante à votre package.json
:
{
"scripts": {
"test": "jest"
}
}
Enfin, lancez yarn test
ou npm test
et Jest affichera ce message :
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
Vous venez d'écrire votre premier test avec Jest avec succès !
Ce test utilise expect
et toBe
pour tester que deux valeurs sont exactement identiques. Pour connaître les autres éléments que Jest peut tester, consultez Utilisation des comparateurs.
Exécution en mode ligne de commande
Vous pouvez exécuter Jest directement depuis le CLI (si celui-ci est globalement disponible dans votre PATH
, par exemple yarn global add jest
ou npm install jest --global
) avec une variété d'options utiles.
Voici comment exécuter Jest sur des fichiers correspondant à my-test
, en utilisant config.json
comme fichier de configuration et afficher une notification de l'OS natif après l'exécution :
jest my-test --notify --config=config.json
Si vous souhaitez en apprendre davantage sur l'exécution de jest
en mode ligne de commande, consultez la page Options CLI de Jest.
Configuration additionnelle
Générez un fichier de configuration de base
Basé sur votre projet, Jest vous posera quelques questions et créera un fichier de configuration de base avec une courte description pour chaque option :
jest --init
Utilisez Babel
Pour utiliser Babel, installez les dépendances requises :
- npm
- Yarn
- pnpm
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
Configurez Babel pour cibler votre version actuelle de Node en créant un fichier babel.config.js
à la racine de votre projet :
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
The ideal configuration for Babel will depend on your project. See Babel's docs for more details.
Faites en sorte que votre configuration Babel soit adaptée à Jest
Jest définira process.env.NODE_ENV
avec 'test'
s'il n'est pas défini avec quelque chose d'autre. Vous pouvez l'utiliser dans votre configuration pour paramétrer de manière conditionnelle uniquement la compilation nécessaire pour Jest, par exemple.
module.exports = api => {
const isTest = api. nv('test');
// Vous pouvez utiliser isTest pour déterminer les presets et les plugins à utiliser.
return {
// ...
};
};
babel-jest
is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. Pour éviter ce résultat, vous pouvez réinitialiser explicitement l'option de configuration transform
:
module.exports = {
transform: {},
};
Utilisez Webpack
Jest peut être utilisé dans les projets qui utilisent webpack pour gérer les ressources, les styles et la compilation. webpack offre quelques défis singuliers par rapport à d'autres outils. Consultez le guide webpack pour commencer.
Utilisez parcel
Jest peut être utilisé dans les projets qui utilisent parcel-bundler pour gérer les ressources, les styles et la compilation de manière similaire à webpack. Parcel nécessite aucune configuration. Reportez-vous à la documentation officielle pour commencer.
Utilisez TypeScript
Via babel
Jest prend en charge TypeScript, via Babel. Tout d'abord, assurez-vous d'avoir suivi les instructions sur l'utilisation de Babel ci-dessus. Ensuite, installez @babel/preset-typescript
:
- npm
- Yarn
- pnpm
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
Ensuite, ajoutez @babel/preset-typescript
à la liste des presets dans votre babel.config.js
.
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
Toutefois, l'utilisation de TypeScript avec Babel présente quelques inconvénients. La prise en charge de TypeScript dans Babel étant purement une transpilation, Jest ne vérifiera pas le typage de vos tests lors de leur exécution. Si vous souhaitez cela, vous pouvez à la place utiliser ts-jest, ou simplement exécuter le compilateur TypeScript tsc séparément (ou dans le prolongement de votre processus de construction).
Via ts-jest
ts-jest est un préprocesseur TypeScript avec la prise en charge de source map pour Jest qui vous permet d'utiliser Jest pour tester les projets écrits en TypeScript.
- npm
- Yarn
- pnpm
npm install --save-dev ts-jest
yarn add --dev ts-jest
pnpm add --save-dev ts-jest
Afin que Jest puisse transpiler TypeScript avec ts-jest
, vous aurez besoin de créer un fichier de configuration .
Définitions de type
Il existe deux façons d'avoir les API globales Jest typées pour les fichiers de test écrits en TypeScript.
Vous pouvez utiliser les définitions de types qui sont livrées avec Jest et seront mises à jour chaque fois que vous mettez à jour Jest. Installez le paquet @jest/globals
:
- npm
- Yarn
- pnpm
npm install --save-dev @jest/globals
yarn add --dev @jest/globals
pnpm add --save-dev @jest/globals
Et importez les API depuis le paquet :
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);
});
});
Consultez la documentation d'utilisation supplémentaire de describe.each
/test.each
et des fonctions simulées
.
Ou vous pouvez choisir d'installer le paquet @types/jest
. Il fournit des types pour les globales Jest sans devoir les importer.
- npm
- Yarn
- pnpm
npm install --save-dev @types/jest
yarn add --dev @types/jest
pnpm add --save-dev @types/jest
@types/jest
is a third party library maintained at DefinitelyTyped, hence the latest Jest features or versions may not be covered yet. Essayez de faire correspondre les versions de Jest et @types/jest
aussi proche que possible. Par exemple, si vous utilisez Jest 27.4.0
alors l'installation 27.4.x
de @types/jest
est idéal.