Configuration de Jest
La philosophie de Jest est de fonctionner parfaitement par défaut, mais parfois vous avez besoin de plus de possibilités de configuration.
Il est recommandé de définir la configuration dans un fichier JavaScript dédié, TypeScript ou JSON. The file will be discovered automatically, if it is named jest.config.js|ts|mjs|cjs|cts|json
. Vous pouvez utiliser le drapeau --config
pour passer un chemin explicite vers le fichier.
Gardez à l'esprit que l'objet de configuration qui en résulte doit toujours être sérialisable en JSON.
Le fichier de configuration devrait simplement exporter un objet :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
verbose: true,
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
verbose: true,
};
export default config;
Ou une fonction renvoyant un objet :
- JavaScript
- TypeScript
/** @returns {Promise<import('jest').Config>} */
module.exports = async () => {
return {
verbose: true,
};
};
import type {Config} from 'jest';
export default async (): Promise<Config> => {
return {
verbose: true,
};
};
Pour lire les fichiers de configuration TypeScript, Jest nécessite ts-node
. Assurez-vous qu'il soit installé dans votre projet.
La configuration peut également être stockée dans un fichier JSON en tant qu'objet simple :
{
"bail": 1,
"verbose": true
}
Alternativement la configuration de Jest peut être définie via la clé "jest"
dans le package.json
de votre projet :
{
"name": "my-project",
"jest": {
"verbose": true
}
}
Also Jest's configuration json file can be referenced through the "jest"
key in the package.json
of your project:
{
"name": "my-project",
"jest": "./path/to/config.json"
}
Options
Vous pouvez récupérer les valeurs par défaut de Jest dans jest-config
pour les étendre si nécessaire :
- JavaScript
- TypeScript
const {defaults} = require('jest-config');
/** @type {import('jest').Config} */
const config = {
moduleDirectories: [...defaults.moduleDirectories, 'bower_components'],
};
module.exports = config;
import type {Config} from 'jest';
import {defaults} from 'jest-config';
const config: Config = {
moduleDirectories: [...defaults.moduleDirectories, 'bower_components'],
};
export default config;
automock
[boolean]bail
[number | boolean]cacheDirectory
[string]clearMocks
[boolean]collectCoverage
[boolean]collectCoverageFrom
[array]coverageDirectory
[string]coveragePathIgnorePatterns
[array<string>]coverageProvider
[string]coverageReporters
[array<string | [string, options]>]coverageThreshold
[object]dependencyExtractor
[string]displayName
[string, object]errorOnDeprecated
[boolean]extensionsToTreatAsEsm
[array<string>]fakeTimers
[object]forceCoverageMatch
[array<string>]globals
[object]globalSetup
[string]globalTeardown
[string]haste
[object]injectGlobals
[boolean]maxConcurrency
[number]maxWorkers
[number | string]moduleDirectories
[array<string>]moduleFileExtensions
[array<string>]moduleNameMapper
[object<string, string | array<string>>]modulePathIgnorePatterns
[array<string>]modulePaths
[array<string>]notify
[boolean]notifyMode
[string]openHandlesTimeout
[number]preset
[string]prettierPath
[string]projects
[array<string | ProjectConfig>]randomize
[boolean]reporters
[array<moduleName | [moduleName, options]>]resetMocks
[boolean]resetModules
[boolean]resolver
[string]restoreMocks
[boolean]rootDir
[string]roots
[array<string>]runner
[string]sandboxInjectedGlobals
[array<string>]setupFiles
[array]setupFilesAfterEnv
[array]showSeed
[boolean]slowTestThreshold
[number]snapshotFormat
[object]snapshotResolver
[string]snapshotSerializers
[array<string>]testEnvironment
[string]testEnvironmentOptions
[Object]testFailureExitCode
[number]testMatch
[array<string>]testPathIgnorePatterns
[array<string>]testRegex
[string | array<string>]testResultsProcessor
[string]testRunner
[string]testSequencer
[string]testTimeout
[number]transform
[object<string, pathToTransformer | [pathToTransformer, object]>]transformIgnorePatterns
[array<string>]unmockedModulePathPatterns
[array<string>]verbose
[boolean]waitNextEventLoopTurnForUnhandledRejectionEvents
[boolean]watchPathIgnorePatterns
[array<string>]watchPlugins
[array<string | [string, Object]>]watchman
[boolean]workerIdleMemoryLimit
[number|string]//
[string]workerThreads
Référence
automock
[boolean]
Par défaut : false
Cette option indique à Jest que tous les modules importés dans vos tests doivent être simulés automatiquement. Tous les modules utilisés dans vos tests auront une implémentation de remplacement, en conservant la surface de l'API.
Exemple :
export default {
authorize: () => 'token',
isAuthorized: secret => secret === 'wizard',
};
import utils from '../utils';
test('if utils mocked automatically', () => {
// Les méthodes publiques de `utils` sont maintenant des fonctions simulées
expect(utils.authorize.mock).toBeTruthy();
expect(utils.isAuthorized.mock).toBeTruthy();
// Vous pouvez les fournir avec votre propre implémentation
// ou passer la valeur de retour attendue
utils.authorize.mockReturnValue('mocked_token');
utils.isAuthorized.mockReturnValue(true);
expect(utils.authorize()).toBe('mocked_token');
expect(utils.isAuthorized('not_wizard')).toBeTruthy();
});
Les modules Node sont automatiquement simulés lorsque vous avez un simulateur manuel en place (par exemple : __mocks__/lodash.js
). Plus d'infos ici.
Les modules du noyau, comme fs
, ne sont pas simulés par défaut. Ils peuvent être simulés explicitement, par exemple jest.mock('fs')
.
bail
[number | boolean]
Par défaut : 0
Par défaut, Jest exécute tous les tests et produit toutes les erreurs dans la console à la fin. L'option de configuration bail peut être utilisée ici pour que Jest arrête de lancer des tests après n
échecs. Définir bail à true
est la même chose que définir bail à 1
.
cacheDirectory
[string]
Par défaut : "/tmp/<path>"
Le répertoire où Jest doit stocker ses informations de dépendance en cache.
Avant d'exécuter les tests, Jest tente d’analyser votre arborescence de dépendances (en amont) et met ces résultats en cache afin d’alléger les accès au système de fichiers qui doivent se produire lors de l’exécution des tests. Cette option de configuration vous permet de personnaliser le répertoire où Jest stocke ces données.
clearMocks
[boolean]
Par défaut : false
Efface automatiquement les appels, les instances, les contextes et les résultats des simulations avant chaque test. Équivalent à l'appel de jest.clearAllMocks()
avant chaque test. Cela ne supprime aucune implémentation simulée qui aurait pu être fournie.
collectCoverage
[boolean]
Par défaut : false
Indique si les informations de couverture doivent être collectées lors de l'exécution du test. Étant donné que cette opération modifie tous les fichiers exécutés avec des instructions de collecte de couverture, elle peut ralentir considérablement vos tests.
Jest est livré avec deux fournisseurs de couverture : babel
(par défaut) et v8
. Consultez l'option coverageProvider
pour plus de détails.
Les fournisseurs de couverture babel
et v8
utilisent /* istanbul ignorent la suivante */
et /* c8 ignorent les commentaires suivants */
pour exclure les lignes des rapports de couverture, respectivement. Pour plus d'informations, vous pouvez consulter la documentation istanbuljs
et la documentation c8
.
collectCoverageFrom
[array]
Par défaut : undefined
Un tableau de patterns glob indiquant un ensemble de fichiers pour lesquels des informations de couverture doivent être collectées. Si un fichier correspond au pattern glob spécifié, des informations de couverture seront collectées pour ce fichier, même si aucun test n'existe pour ce fichier et qu'il n'est jamais requis dans la suite de tests.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
collectCoverageFrom: [
'**/*.{js,jsx}',
'!**/node_modules/**',
'!**/vendor/**',
],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
collectCoverageFrom: [
'**/*.{js,jsx}',
'!**/node_modules/**',
'!**/vendor/**',
],
};
export default config;
Ceci collectera les informations de couverture pour tous les fichiers à l'intérieur du rootDir
du projet, sauf ceux qui correspondent à **/node_modules/**
ou **/vendor/**
.
Chaque pattern glob est appliqué dans l'ordre dans lequel ils sont spécifiés dans la configuration. Par exemple ["!**/__tests__/**", "**/*.js"]
n'exclura pas __tests__
car la négation est écrasée par le second pattern. Pour que le glob négatif fonctionne dans cet exemple, il doit venir après **/*.js
.
Cette option nécessite que collectCoverage
soit défini à true
ou que Jest ait été appelé avec l'option --coverage
.
Help:
If you are seeing coverage output such as...
=============================== Coverage summary ===============================
Statements : Unknown% ( 0/0 )
Branches : Unknown% ( 0/0 )
Functions : Unknown% ( 0/0 )
Lines : Unknown% ( 0/0 )
================================================================================
Jest: Coverage data for global was not found.
Il est très probable que vos patterns glob ne correspondent à aucun fichier. Reportez-vous à la documentation de micromatch pour vous assurer que vos globs sont compatibles.
coverageDirectory
[string]
Par défaut : undefined
Le répertoire où Jest doit écrire les fichiers de couverture.
coveragePathIgnorePatterns
[array<string>]
Par défaut : ["/node_modules/"]
Un tableau de chaînes de patterns regexp qui sont comparées à tous les chemins de fichiers avant d'exécuter le test. Si le chemin du fichier correspond à l'un des patterns, l'information de couverture sera ignorée.
Ces chaînes de patterns correspondent au chemin d'accès complet. Utilisez la chaine de caractère <rootDir>
pour inclure le chemin vers la racine de votre projet, pour l'empêcher d'ignorer accidentellement tous vos fichiers dans les environnements qui auraient un répertoire racine différent. Exemple : ["<rootDir>/build/", "<rootDir>/node_modules/"]
.
coverageProvider
[string]
Indique quel fournisseur doit être utilisé pour instrumenter le code pour la couverture. Les valeurs autorisées sont babel
(par défaut) ou v8
.
coverageReporters
[array<string | [string, options]>]
Default: ["clover", "json", "lcov", "text"]
Une liste de noms de rapporteurs que Jest utilise lors de la rédaction de rapports de couverture. N'importe quel rapporteur istanbul peut être utilisé.
La configuration de cette option remplace les valeurs par défaut. Ajoutez "text"
ou "text-summary"
pour voir un résumé de la couverture dans la sortie console.
Des options supplémentaires peuvent être passées en utilisant la forme tuple. Par exemple, vous pouvez cacher les lignes de déclaration de couverture pour tous les fichiers couverts :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
coverageReporters: ['clover', 'json', 'lcov', ['text', {skipFull: true}]],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
coverageReporters: ['clover', 'json', 'lcov', ['text', {skipFull: true}]],
};
export default config;
For more information about the options object shape refer to CoverageReporterWithOptions
type in the type definitions.
coverageThreshold
[object]
Par défaut : undefined
Cela servira à configurer le seuil minimum pour les résultats de la couverture. Les seuils peuvent être spécifiés comme global
, comme glob, et comme un répertoire ou un chemin de fichier. Si les seuils ne sont pas atteints, jest échouera. Les seuils spécifiés en tant que nombre positif sont considérés comme le pourcentage minimum requis. Les seuils spécifiés comme un nombre négatif représentent le nombre maximum d'entités non couvertes autorisées.
Par exemple, avec la configuration suivante, jest échouera si la couverture des branches, des lignes et des fonctions est inférieure à 80%, ou s'il y a plus de 10 déclarations non couvertes :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
coverageThreshold: {
global: {
branches: 80,
functions: 80,
lines: 80,
statements: -10,
},
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
coverageThreshold: {
global: {
branches: 80,
functions: 80,
lines: 80,
statements: -10,
},
},
};
export default config;
Si des globs ou des chemins sont spécifiés à côté de global
, les données de couverture pour les chemins correspondants seront soustraites de la couverture globale et les seuils seront appliqués indépendamment. Les seuils pour les globs sont appliqués à tous les fichiers correspondant à la glob. Si le fichier spécifié par le chemin d'accès n'est pas trouvé, une erreur sera retournée.
Par exemple, avec la configuration suivante :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
coverageThreshold: {
global: {
branches: 50,
functions: 50,
lines: 50,
statements: 50,
},
'./src/components/': {
branches: 40,
statements: 40,
},
'./src/reducers/**/*.js': {
statements: 90,
},
'./src/api/very-important-module.js': {
branches: 100,
functions: 100,
lines: 100,
statements: 100,
},
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
coverageThreshold: {
global: {
branches: 50,
functions: 50,
lines: 50,
statements: 50,
},
'./src/components/': {
branches: 40,
statements: 40,
},
'./src/reducers/**/*.js': {
statements: 90,
},
'./src/api/very-important-module.js': {
branches: 100,
functions: 100,
lines: 100,
statements: 100,
},
},
};
export default config;
Jest échouera si :
- Le répertoire
./src/composants
a une couverture de branche ou pour les instructions inférieure à 40%. - Un des fichiers correspondant au glob
./src/reducers/**/*.js
a une couverture des instructions inférieure à 90%. - Le fichier
./src/api/very-important-module.js
a une couverture inférieure à 100%. - Tous les autres fichiers combinés ont une couverture inférieure à 50% (
global
).
dependencyExtractor
[string]
Par défaut : undefined
Cette option permet l'utilisation d'un extracteur de dépendance personnalisé. Il doit s'agir d'un module de node qui exporte un objet avec une fonction extract
. Par exemple :
const crypto = require('crypto');
const fs = require('fs');
module.exports = {
extract(code, filePath, defaultExtract) {
const deps = defaultExtract(code, filePath);
// Scanne le fichier et ajoute les dépendances dans `deps` (qui est un `Set`)
return deps;
},
getCacheKey() {
return crypto
.createHash('md5')
.update(fs.readFileSync(__filename))
.digest('hex');
},
};
La fonction extract
doit retourner un itérable (Array
, Set
, etc.) avec les dépendances trouvées dans le code.
Ce module peut également contenir une fonction getCacheKey
pour générer une clé de cache afin de déterminer si la logique a changé et si tous les artefacts mis en cache qui s'appuient sur elle doivent être retirés.
displayName
[string, object]
par défaut : undefined
Permet de placer un libellé à côté d'un test en cours d'exécution. Cela devient plus utile dans les dépôts multi-projets où il peut y avoir de nombreux fichiers de configuration jest. Ceci indique visuellement à quel projet appartient un test.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
displayName: 'CLIENT',
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
displayName: 'CLIENT',
};
export default config;
Alternativement, un objet avec les propriétés name
et color
peut être passé. Cela permet une configuration personnalisée de la couleur de fond de displayName. displayName
est blanc par défaut quand sa valeur est une chaîne. Jest utilise chalk
pour fournir la couleur. Ainsi, toutes les options valides pour les couleurs supportées par chalk
sont également supportées par jest.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
displayName: {
name: 'CLIENT',
color: 'blue',
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
displayName: {
name: 'CLIENT',
color: 'blue',
},
};
export default config;
errorOnDeprecated
[boolean]
Par défaut : false
Fait en sorte que l'appel d'API obsolètes génère des messages d'erreur utiles. Utile pour faciliter le processus de mise à jour.
extensionsToTreatAsEsm
[array<string>]
Par défaut : []
Jest exécutera les fichiers .mjs
et .js
avec le champ type
de package.json
le plus proche défini sur module
en tant que modules ECMAScript. Si vous avez d'autres fichiers qui devraient s'exécuter avec ESM natif, vous devez spécifier leur extension de fichier ici.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
extensionsToTreatAsEsm: ['.ts'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
extensionsToTreatAsEsm: ['.ts'],
};
export default config;
Le support ESM de Jest est encore expérimental, voir sa documentation pour plus de détails.
fakeTimers
[object]
Par défaut : {}
Les faux temporisateurs peuvent être utiles lorsqu'un morceau de code définit un long délai d'attente que nous ne voulons pas attendre dans un test. Pour plus de détails, consultez le guide des faux temporisateurs et la documentation API.
Cette option fournit la configuration par défaut des faux temporisateurs pour tous les tests. L'appel à jest.useFakeTimers()
dans un fichier de test utilisera ces options ou les remplacera si un objet de configuration est passé. Par exemple, vous pouvez dire à Jest de conserver l'implémentation originale de process.nextTick()
et ajuster la limite des temporisateurs récursifs qui seront exécutés :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
fakeTimers: {
doNotFake: ['nextTick'],
timerLimit: 1000,
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
fakeTimers: {
doNotFake: ['nextTick'],
timerLimit: 1000,
},
};
export default config;
// installe de faux temporisateurs pour ce fichier en utilisant les options de la configuration Jest
jest.useFakeTimers();
test('augmente la limite des temporisateurs récursifs pour ce test et les tests suivants', () => {
jest.useFakeTimers({timerLimit: 5000});
// ...
});
Au lieu d'inclure jest.useFakeTimers()
dans chaque fichier de test, vous pouvez activer les faux temporisateurs globalement pour tous les tests dans votre configuration de Jest :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
fakeTimers: {
enableGlobally: true,
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
fakeTimers: {
enableGlobally: true,
},
};
export default config;
Options de configuration :
type FakeableAPI =
| 'Date'
| 'hrtime'
| 'nextTick'
| 'performance'
| 'queueMicrotask'
| 'requestAnimationFrame'
| 'cancelAnimationFrame'
| 'requestIdleCallback'
| 'cancelIdleCallback'
| 'setImmediate'
| 'clearImmediate'
| 'setInterval'
| 'clearInterval'
| 'setTimeout'
| 'clearTimeout';
type ModernFakeTimersConfig = {
/**
* Si défini à `true` tous les temporisateurs seront automatiquement avancés de 20 millisecondes
* toutes les 20 millisecondes. Un delta de temps personnalisé peut être fourni en passant un nombre.
* La valeur par défaut est `false`.
*/
advanceTimers?: boolean | number;
/**
* Liste des noms des APIs qui ne doivent pas être falsifiés. La valeur par défaut est `[]`, ce qui signifie que
* toutes les APIs sont falsifiées.
*/
doNotFake?: Array<FakeableAPI>;
/** Si les faux temporisateurs doivent être activés pour tous les fichiers de test. La valeur par défaut est `false`. */
enableGlobally?: boolean;
/**
* Utilise l'ancienne implémentation des faux temporisateurs au lieu de celle supportée par `@sinonjs/fake-timers`.
* La valeur par défaut est `false`.
*/
legacyFakeTimers?: boolean;
/** Sets current system time to be used by fake timers, in milliseconds. La valeur par défaut est `Date.now()`. */
now?: number;
/** Nombre maximum de temporisateurs récursifs qui seront exécutés. La valeur par défaut est `100_000` temporisateurs. */
timerLimit?: number;
};
Pour certaines raisons, il se peut que vous deviez utiliser une ancienne implémentation de faux temporisateurs. Voici comment l'activer globalement (les options supplémentaires ne sont pas prises en charge) :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
fakeTimers: {
enableGlobally: true,
legacyFakeTimers: true,
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
fakeTimers: {
enableGlobally: true,
legacyFakeTimers: true,
},
};
export default config;
forceCoverageMatch
[array<string>]
Par défaut : ['']
Les fichiers de test sont normalement ignorés de la collecte de la couverture de code. Avec cette option, vous pouvez écraser ce comportement et inclure les fichiers ignorés dans la couverture de code.
Par exemple, si vous avez des tests dans des fichiers sources nommés avec l'extension .t.js
comme suit :
export function sum(a, b) {
return a + b;
}
if (process.env.NODE_ENV === 'test') {
test('sum', () => {
expect(sum(1, 2)).toBe(3);
});
}
Vous pouvez collecter la couverture de ces fichiers avec le paramètre forceCoverageMatch
.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
forceCoverageMatch: ['**/*.t.js'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
forceCoverageMatch: ['**/*.t.js'],
};
export default config;
globals
[object]
Par défaut : {}
Un ensemble de variables globales qui doivent être disponibles dans tous les environnements de test.
Par exemple, ce qui suit crée une variable globale __DEV__
définie à true
dans tous les environnements de test :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
globals: {
__DEV__: true,
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
globals: {
__DEV__: true,
},
};
export default config;
If you specify a global reference value (like an object or array) here, and some code mutates that value in the midst of running a test, that mutation will not be persisted across test runs for other test files. De plus, l'objet globals
doit être sérialisable en json, donc il ne peut pas être utilisé pour spécifier des fonctions globales. Pour cela, vous devez utiliser setupFiles
.
globalSetup
[string]
Par défaut : undefined
Cette option permet l'utilisation d'un module de configuration global personnalisé, qui doit exporter une fonction (elle peut être sync ou async). The function will be triggered once before all test suites and it will receive two arguments: Jest's globalConfig
and projectConfig
.
Un module de configuration global configuré dans un projet (à l'aide d'un runner multi-projets) ne sera déclenché que lorsque vous exécuterez au moins un test de ce projet.
Toute variable globale définie par globalSetup
ne peut être lue que dans globalTeardown
. Vous ne pouvez pas récupérer les globales définies ici dans vos suites de test.
Alors que la transformation du code est appliquée au fichier d'installation lié, Jest ne transformera pas tout code dans node_modules
. Cela est dû à la nécessité de charger les transformateurs réels (par exemple babel
ou typescript
) pour effectuer la transformation.
module.exports = async function (globalConfig, projectConfig) {
console.log(globalConfig.testPathPatterns);
console.log(projectConfig.cache);
// Set reference to mongod in order to close the server during teardown.
globalThis.__MONGOD__ = mongod;
};
module.exports = async function (globalConfig, projectConfig) {
console.log(globalConfig.testPathPatterns);
console.log(projectConfig.cache);
await globalThis.__MONGOD__.stop();
};
globalTeardown
[string]
Par défaut : undefined
Cette option permet l'utilisation d'un module de nettoyage global personnalisé, qui doit exporter une fonction (elle peut être sync ou async). The function will be triggered once after all test suites and it will receive two arguments: Jest's globalConfig
and projectConfig
.
Un module de nettoyage global configuré dans un projet (à l'aide d'un runner multi-projets) ne sera déclenché que lorsque vous exécuterez au moins un test de ce projet.
La même mise en garde concernant la transformation des node_modules
que pour globalSetup
s'applique à globalTeardown
.
haste
[object]
Par défaut : undefined
Ceci sera utilisé pour configurer le comportement de jest-haste-map
, le système d'exploration de fichiers internes de Jest. Les options suivantes sont prises en charges :
type HasteConfig = {
/** Si vous souhaitez hacher les fichiers en utilisant SHA-1. */
computeSha1?: boolean;
/** La plateforme à utiliser par défaut, par exemple 'ios'. */
defaultPlatform?: string | null;
/** Forcer l'utilisation des API `fs` de Node plutôt que de se lancer dans `find` */
forceNodeFilesystemAPI? boolean ;
/**
* Suivre ou non les liens symboliques lors de l'indexation des fichiers.
* Cette option ne peut pas être utilisée dans les projets qui utilisent watchman.
* Les projets avec la valeur `watchman` à true seront en erreur si cette option est définie à true.
*/
enableSymlinks?: boolean;
/** Chemin vers une implémentation personnalisée de Haste. */
hasteImplModulePath?: string;
/** Toutes les plateformes à cibler, par exemple ['ios', 'android']. */
platforms?: Array<string>;
/** S'il faut lancer une erreur en cas de collision de module. */
throwOnModuleCollision?: boolean;
/** Module HasteMap personnalisé */
hasteMapModulePath?: string;
/** S'il faut conserver tous les fichiers, autorisant par exemple la recherche des tests dans `node_modules`. */
retainAllFiles?: boolean;
};
injectGlobals
[boolean]
Par défaut : true
Insére les globales de Jest (expect
, test
, describe
, beforeEach
etc.) dans l'environnement global. Si vous définissez cette valeur à false
, vous devez par exemple importer à partir de @jest/globals
.
import {expect, jest, test} from '@jest/globals';
jest.useFakeTimers();
test('un test', () => {
expect(Date.now()).toBe(0);
});
Cette option n'est prise en charge qu'en utilisant le runner de test jest-circus
par défaut.
maxConcurrency
[number]
Par défaut : 5
Un nombre limitant le nombre de tests qui sont autorisés à s'exécuter en même temps lors de l'utilisation de test.concurrent
. Tout test dépassant cette limite sera mis en file d'attente et exécuté dès qu'un sera libéré.
maxWorkers
[number | string]
Spécifie le maximum de processus que l'orchestrateur de processus lancera pour exécuter les tests. En mode d'exécution simple, il s'agit par défaut du nombre de cœurs disponibles sur votre machine, moins un pour le thread principal. En mode surveillance, il s'agit par défaut de la moitié des cœurs disponibles sur votre machine afin de s'assurer que Jest reste discret et ne paralyse pas votre machine. Il peut être utile d'utiliser cette option dans les environnements avec des ressources limitées comme les environnements de CI, mais la valeur par défaut devrait être suffisante pour la plupart des cas d’utilisation.
Pour les environnements avec des processeurs disponibles variables, vous pouvez utiliser une configuration basée sur le pourcentage :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
maxWorkers: '50%',
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
maxWorkers: '50%',
};
export default config;
moduleDirectories
[array<string>]
Par défaut : ["node_modules"]
Un tableau de noms de répertoires à rechercher de manière récursive à partir de l'emplacement du module requis. Définir cette option va surcharger la valeur par défaut, si vous souhaitez toujours rechercher node_modules
pour les paquets, incluez-le avec toutes les autres options :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
moduleDirectories: ['node_modules', 'bower_components'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
moduleDirectories: ['node_modules', 'bower_components'],
};
export default config;
moduleFileExtensions
[array<string>]
Default: ["js", "mjs", "cjs", "jsx", "ts", "mts", "cts", "tsx", "json", "node"]
Un tableau d'extensions de fichiers que vos modules utilisent. Si vous demandez des modules sans spécifier d'extension de fichier, voici les extensions que Jest recherchera, dans l'ordre de gauche à droite.
Nous recommandons de placer les extensions les plus couramment utilisées dans votre projet sur la gauche, donc si vous utilisez TypeScript, vous pouvez envisager de déplacer "ts" et/ou "tsx" au début du tableau.
moduleNameMapper
[object<string, string | array<string>>]
Par défaut : null
Une correspondance entre les expressions régulières et les noms de modules ou les tableaux de noms de modules, qui permet d'extraire des ressources, comme des images ou des styles, avec un seul module.
Les modules qui sont associés à un alias sont dé-simulés par défaut, que la simulation automatique soit activé ou non.
Utilisez le jeton de chaîne <rootDir>
pour faire référence à la valeur rootDir
si vous souhaitez utiliser les chemins d'accès aux fichiers.
En outre, vous pouvez substituer des groupes de regex capturés en utilisant des rétro références numérotées.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
moduleNameMapper: {
'^image![a-zA-Z0-9$_-]+$': 'GlobalImageStub',
'^[./a-zA-Z0-9$_-]+\\.png$': '<rootDir>/RelativeImageStub.js',
'module_name_(.*)': '<rootDir>/substituted_module_$1.js',
'assets/(.*)': [
'<rootDir>/images/$1',
'<rootDir>/photos/$1',
'<rootDir>/recipes/$1',
],
},
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
moduleNameMapper: {
'^image![a-zA-Z0-9$_-]+$': 'GlobalImageStub',
'^[./a-zA-Z0-9$_-]+\\.png$': '<rootDir>/RelativeImageStub.js',
'module_name_(.*)': '<rootDir>/substituted_module_$1.js',
'assets/(.*)': [
'<rootDir>/images/$1',
'<rootDir>/photos/$1',
'<rootDir>/recipes/$1',
],
},
};
export default config;
L'ordre dans lequel les correspondances sont définies est important. Les patterns sont vérifiés un par un jusqu'à ce qu'il y en ait un qui convienne. La règle la plus spécifique doit être citée en premier. C'est également vrai pour les tableaux de noms de modules.
Si vous fournissez le nom du module sans les limites ^$
, cela peut provoquer des erreurs difficiles à repérer. Par exemple : relay
remplacera tous les modules qui contiennent relay
comme une sous-chaîne dans son nom : relay
, react-relay
et graphql-relay
seront tous pointés sur votre stub.
modulePathIgnorePatterns
[array<string>]
Par défaut : []
Un tableau de chaînes de patterns regexp qui sont comparées à tous les chemins de modules avant que ces chemins ne soient considérés comme « visibles » par le chargeur de modules. Si le chemin d'un module correspond à un des patterns, il ne sera pas possible de faire un require()
dans l'environnement de test.
Ces chaînes de patterns correspondent au chemin d'accès complet. Utilisez la chaine de caractère <rootDir>
pour inclure le chemin vers la racine de votre projet, pour l'empêcher d'ignorer accidentellement tous vos fichiers dans les environnements qui auraient un répertoire racine différent.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
modulePathIgnorePatterns: ['<rootDir>/build/'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
modulePathIgnorePatterns: ['<rootDir>/build/'],
};
export default config;
modulePaths
[array<string>]
Par défaut : []
C'est une API alternative à la définition de la variable d'environnement NODE_PATH
, modulePaths
est un tableau de chemins absolus vers des emplacements supplémentaires à rechercher lors de la résolution des modules. Utilisez le jeton de chaîne <rootDir>
pour inclure le chemin vers le répertoire racine de votre projet.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
modulePaths: ['<rootDir>/app/'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
modulePaths: ['<rootDir>/app/'],
};
export default config;
notify
[boolean]
Par défaut : false
Active les notifications de l'OS pour les résultats de test. Pour afficher les notifications, Jest a besoin du package node-notifier
qui doit être installé en plus :
- npm
- Yarn
- pnpm
npm install --save-dev node-notifier
yarn add --dev node-notifier
pnpm add --save-dev node-notifier
Sur macOS, n'oubliez pas d'autoriser les notifications depuis le terminal-notifier
sous Préférences Système > Notifications & Focus.
Sous Windows, node-notifier
crée une nouvelle entrée dans le menu de démarrage à la première utilisation et n'affiche pas la notification. Les notifications seront affichées correctement lors des exécutions suivantes.
notifyMode
[string]
Par défaut : failure-change
Spécifie le mode de notification. Nécessite notify : true
.
Modes
always
: toujours envoyer une notification.failure
: envoyer une notification lorsque les tests échouent.success
: envoyer une notification lorsque les tests réussissent.change
: envoyer une notification lorsque le statut a changé.success-change
: envoyer une notification lorsque les tests réussissent ou une fois lorsqu'ils échouent.failure-change
: envoyer une notification lorsque les tests échouent ou une fois lorsqu'ils réussissent.
openHandlesTimeout
[number]
Default: 1000
Print a warning indicating that there are probable open handles if Jest does not exit cleanly this number of milliseconds after it completes. Use 0
to disable the warning.
preset
[string]
Par défaut : undefined
Un preset qui est utilisé comme base pour la configuration de Jest. Un preset doit pointer vers un module npm qui a un fichier jest-preset.json
, jest-preset.js
, jest-preset.cjs
ou jest-preset.mjs
à la racine.
Par exemple, ce preset foo-bar/jest-preset.js
sera configuré comme suit :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
preset: 'foo-bar',
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
preset: 'foo-bar',
};
export default config;
Les presets peuvent également être relatifs aux chemins du système de fichiers:
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
preset: './node_modules/foo-bar/jest-preset.js',
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
preset: './node_modules/foo-bar/jest-preset.js',
};
export default config;
If you also have specified rootDir
, the resolution of this file will be relative to that root directory.
prettierPath
[string]
Par défaut : 'prettier'
Définit le chemin vers le module de node prettier
utilisé pour mettre à jour les snapshots en ligne.
projects
[array<string | ProjectConfig>]
Par défaut : undefined
Lorsque la configuration projects
est fournie avec un tableau de chemins ou de patterns glob, Jest exécutera les tests dans tous les projets spécifiés en même temps. C'est idéal pour les monorepos ou lorsque vous travaillez sur plusieurs projets en même temps.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
projects: ['<rootDir>', '<rootDir>/examples/*'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
projects: ['<rootDir>', '<rootDir>/examples/*'],
};
export default config;
Cet exemple de configuration exécutera Jest dans le répertoire racine ainsi que dans tous les dossiers du répertoire examples. Vous pouvez avoir un nombre illimité de projets en cours d'exécution dans la même instance Jest.
La fonctionnalité des projets peut également être utilisée pour exécuter plusieurs configurations ou plusieurs runners. Pour cela, vous pouvez passer un tableau d'objets de configuration. Par exemple, pour exécuter à la fois des tests et ESLint (via jest-runner-eslint) dans la même invocation de Jest :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
projects: [
{
displayName: 'test',
},
{
displayName: 'lint',
runner: 'jest-runner-eslint',
testMatch: ['<rootDir>/**/*.js'],
},
],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
projects: [
{
displayName: 'test',
},
{
displayName: 'lint',
runner: 'jest-runner-eslint',
testMatch: ['<rootDir>/**/*.js'],
},
],
};
export default config;
Lors de l'utilisation d'un runner multi-projets, il est recommandé d'ajouter un displayName
pour chaque projet. Cela affichera le displayName
d'un projet à côté de ses tests.
With the projects
option enabled, Jest will copy the root-level configuration options to each individual child configuration during the test run, resolving its values in the child's context. This means that string tokens like <rootDir>
will point to the child's root directory even if they are defined in the root-level configuration.
randomize
[boolean]
Par défaut : false
The equivalent of the --randomize
flag to randomize the order of the tests in a file.
reporters
[array<moduleName | [moduleName, options]>]
Par défaut : undefined
Utilisez cette option de configuration pour ajouter des rapporteurs à Jest. Il doit s'agir d'une liste de noms de rapporteurs, des options supplémentaires peuvent être passées à un rapporteur en utilisant la forme tuple :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
reporters: [
'default',
['<rootDir>/custom-reporter.js', {banana: 'yes', pineapple: 'no'}],
],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
reporters: [
'default',
['<rootDir>/custom-reporter.js', {banana: 'yes', pineapple: 'no'}],
],
};
export default config;
Rapporteur par défaut
Si des rapporteurs personnalisés sont spécifiés, le rapporteur par défaut de Jest sera écrasé. Si vous souhaitez le conserver, 'default'
doit être passé comme nom de rapporteur :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
reporters: [
'default',
['jest-junit', {outputDirectory: 'reports', outputName: 'report.xml'}],
],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
reporters: [
'default',
['jest-junit', {outputDirectory: 'reports', outputName: 'report.xml'}],
],
};
export default config;
Rapporteur GitHub Actions
If included in the list, the built-in GitHub Actions Reporter will annotate changed files with test failure messages and (if used with 'silent: false'
) print logs with github group features for easy navigation. Note that 'default'
should not be used in this case as 'github-actions'
will handle that already, so remember to also include 'summary'
. If you wish to use it only for annotations simply leave only the reporter without options as the default value of 'silent'
is 'true'
:
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
reporters: [['github-actions', {silent: false}], 'summary'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
reporters: [['github-actions', {silent: false}], 'summary'],
};
export default config;
Rapporteur summary
Le rapport summary affiche le résumé de tous les tests. Il fait partie du rapporteur par défaut, donc il sera activé si 'default'
est inclus dans la liste. Par exemple, vous pouvez l'utiliser en tant que rapporteur autonome au lieu de celui par défaut, ou en combinaison avec le rapporteur Silent :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
reporters: ['jest-silent-reporter', 'summary'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
reporters: ['jest-silent-reporter', 'summary'],
};
export default config;
The summary
reporter accepts options. Since it is included in the default
reporter you may also pass the options there.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
reporters: [['default', {summaryThreshold: 10}]],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
reporters: [['default', {summaryThreshold: 10}]],
};
export default config;
The summaryThreshold
option behaves in the following way, if the total number of test suites surpasses this threshold, a detailed summary of all failed tests will be printed after executing all the tests. It defaults to 20
.
Rapporteurs personnalisés
Vous avez faim de rapporteurs ? Jetez un coup d'œil à la longue liste de rapporteurs géniaux de Awesome Jest.
Custom reporter module must export a class that takes globalConfig
, reporterOptions
and reporterContext
as constructor arguments:
class CustomReporter {
constructor(globalConfig, reporterOptions, reporterContext) {
this._globalConfig = globalConfig;
this._options = reporterOptions;
this._context = reporterContext;
}
onRunComplete(testContexts, results) {
console.log('Custom reporter output:');
console.log('global config:', this._globalConfig);
console.log('options for this reporter from Jest config:', this._options);
console.log('reporter context passed from test scheduler:', this._context);
}
// Optionally, reporters can force Jest to exit with non zero code by returning
// an `Error` from `getLastError()` method.
getLastError() {
if (this._shouldFail) {
return new Error('Erreur personnalisée signalée !');
}
}
}
module.exports = CustomReporter;
For the full list of hooks and argument types see the Reporter
interface in packages/jest-reporters/src/types.ts.
resetMocks
[boolean]
Par défaut : false
Réinitialisation automatique de l'état de la simulation avant chaque test. Équivalent à l'appel de jest.resetAllMocks()
avant chaque test. Cela conduira à la destruction des implémentations fictives des simulations, mais ne rétablira pas leur implémentation initiale.
resetModules
[boolean]
Par défaut : false
Par défaut, chaque fichier de test obtient son propre registre de modules indépendant. L'activation de resetModules
va un peu plus loin et réinitialise le registre des modules avant d'exécuter chaque test individuel. Ceci est utile pour isoler les modules pour chaque test afin que l'état du module local n'entre pas en conflit entre les tests. Cela peut être fait par programmation en utilisant jest.resetModules()
.
resolver
[string]
Par défaut : undefined
Cette option permet d'utiliser un résolveur personnalisé. Ce résolveur doit être un module qui exporte soit :
- une fonction qui attend une chaîne comme premier argument pour le chemin à résoudre et un objet d'options comme second argument. La fonction doit soit retourner un chemin d'accès au module qui doit être résolu, soit lancer une erreur si le module est introuvable. ou
- un objet contenant des propriétés
async
et/ousync
. La propriétésync
doit être une fonction avec la forme expliquée ci-dessus, et la propriétéasync
doit également être une fonction qui accepte les mêmes arguments, mais renvoie une promesse qui se résout avec le chemin vers le module ou se rejette avec une erreur.
L'objet d'options fourni aux résolveurs a la forme suivante :
type ResolverOptions = {
/** Répertoire à partir duquel commencer la résolution. */
basedir: string;
/** Liste des conditions d'exportation. */
conditions?: Array<string>;
/** Instance du résolveur par défaut. */
defaultResolver: (path: string, options: ResolverOptions) => string;
/** Liste des extensions de fichiers à rechercher dans l'ordre. */
extensions?: Array<string>;
/** Liste des noms de répertoires à rechercher dans les modules récursivement. */
moduleDirectory?: Array<string>;
/** Liste de `require.paths` à utiliser si rien n'est trouvé dans `node_modules`. */
paths?: Array<string>;
/** Permet de transformer le contenu du `package.json` analysé. */
packageFilter?: (pkg: PackageJSON, file: string, dir: string) => PackageJSON;
/** Permet de transformer un chemin dans un package. */
pathFilter?: (pkg: PackageJSON, path: string, relativePath: string) => string;
/** Répertoire racine actuel. */
rootDir?: string;
};
Le defaultResolver
passé en option est le résolveur par défaut de Jest, ce qui peut être utile lorsque vous écrivez votre propre résolveur. Il prend les mêmes arguments que votre synchrone personnalisé, par exemple (path, options)
et renvoie une chaîne ou des exceptions.
Par exemple, si vous voulez respecter le champ "browser"
de Browserify, vous pouvez utiliser le résolveur suivant :
const browserResolve = require('browser-resolve');
module.exports = browserResolve.sync;
Et ajoutez-le à la configuration de Jest :
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
resolver: '<rootDir>/resolver.js',
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
resolver: '<rootDir>/resolver.js',
};
export default config;
En combinant defaultResolver
et packageFilter
nous pouvons implémenter un package.json
« pré-processeur » qui nous permet de changer la façon dont le résolveur par défaut va résoudre les modules. Par exemple, imaginons que nous souhaitons utiliser le champ "module"
s'il est présent, sinon se rabattre sur "main"
:
module.exports = (path, options) => {
// Apelle defaultResolver, ainsi nous utilisons son cache, sa gestion d'erreur, etc.
return options.defaultResolver(path, {
...options,
// Utilise packageFilter pour traiter `package.json` avant la résolution (voir https://www.npmjs.com/package/resolve#resolveid-opts-cb)
packageFilter: pkg => {
return {
...pkg,
// Modifie la valeur de `main` avant la résolution du paquet
main: pkg.module || pkg.main,
};
},
});
};
restoreMocks
[boolean]
Par défaut : false
Restauration automatique de l'état de la simulation et l'implémentation avant chaque test. Équivalent à l'appel de jest.restoreAllMocks()
avant chaque test. Cela conduira à la destruction des implémentations de tous les simulations et rétablira leur implémentation initiale.
rootDir
[string]
Par défaut : La racine du répertoire contenant votre fichier de configuration ou le package.json
ou le pwd
si aucun package.json
n'est trouvé
Le répertoire racine dans lequel Jest doit rechercher les tests et les modules. Si vous placez votre configuration Jest à l'intérieur de votre package.json
et que vous souhaitez que le répertoire racine soit celui de votre dépôt, la valeur de ce paramètre de configuration sera par défaut le répertoire du package.json
.
Souvent, vous voudrez définir ce paramètre sur 'src'
ou 'lib'
, correspondant à l'endroit où le code est stocké dans votre dépôt.
L'utilisation de '<rootDir>'
comme jeton de chaîne dans tout autre paramètre de configuration basé sur le chemin fera référence à cette valeur. Par exemple, si vous voulez que l'entrée setupFiles
pointe vers le fichier some-setup.js
à la racine de votre projet, vous pouvez définir sa valeur à '<rootDir>/some-setup.js'
.
roots
[array<string>]
Par défaut : ["<rootDir>"]
Une liste de chemins vers des répertoires que Jest devrait utiliser pour rechercher des fichiers.
Il y a des cas où vous souhaitez que Jest ne cherche que dans un seul sous-répertoire (comme le cas où vous avez un répertoire src/
dans votre dépôt), mais l'empêche d'accéder au reste du dépôt.
Tandis que rootDir
est surtout utilisé comme un jeton à réutiliser dans d'autres options de configuration, roots
est utilisé par les internes de Jest pour localiser les fichiers de test et les fichiers sources. Cela s'applique également lors de la recherche de simulations manuelles pour les modules de node_modules
(__mocks__
devra résider dans l'une des roots
).
Par défaut, roots
a une seule entrée <rootDir>
mais il y a des cas où vous souhaitez avoir plusieurs racines dans un même projet, par exemple roots : ["<rootDir>/src/", "<rootDir>/tests/"]
.
runner
[string]
Par défaut : "jest-runner"
Cette option vous permet d'utiliser un runner personnalisé au lieu du runner de test par défaut de Jest. Exemples de runners inclus :
La valeur de la propriété runner
peut omettre le préfixe jest-runner-
du nom du paquet.
To write a test-runner, export a class with which accepts globalConfig
in the constructor, and has a runTests
method with the signature:
async function runTests(
tests: Array<Test>,
watcher: TestWatcher,
onStart: OnTestStart,
onResult: OnTestSuccess,
onFailure: OnTestFailure,
options: TestRunnerOptions,
): Promise<void>;
Si vous avez besoin de restreindre votre test-runner pour qu'il ne s'exécute qu'en série plutôt que d'être exécuté en parallèle, votre classe doit avoir la propriété isSerial
définie à true
.
sandboxInjectedGlobals
[array<string>]
Renommé en extraGlobals
dans Jest 28.
Par défaut : undefined
Les fichiers de test s'exécutent à l'intérieur d'une vm, ce qui ralentit les appels aux propriétés contextuelles globales (par exemple Math
). Avec cette option, vous pouvez spécifier des propriétés supplémentaires à définir à l'intérieur de la vm pour des recherches plus rapides.
Par exemple, si vos tests appellent souvent Math
, vous pouvez le passer en définissant sandboxInjectedGlobals
.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
sandboxInjectedGlobals: ['Math'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
sandboxInjectedGlobals: ['Math'],
};
export default config;
Cette option n'a aucun effet si vous utilisez l'ESM natif.
setupFiles
[array]
Par défaut : []
Une liste de chemins vers des modules qui exécutent du code pour configurer ou mettre en place l'environnement de test. Chaque setupFile sera exécuté une fois par fichier de test. Puisque chaque test s'exécute dans son propre environnement, ces scripts seront exécutés dans l'environnement de test avant d'exécuter setupFilesAfterEnv
et avant le code du test lui-même.
Si votre script de configuration est un module CJS, il peut exporter une fonction asynchrone. Jest appellera la fonction et attendra son résultat. Cela peut être utile pour récupérer des données de manière asynchrone. Si le fichier est un module ESM, il suffit d'utiliser le await de niveau supérieur pour obtenir le même résultat.
setupFilesAfterEnv
[array]
Par défaut : []
Une liste de chemins vers des modules qui exécutent du code pour configurer ou paramétrer le framework de test avant l'exécution de chaque fichier de test de la suite. Puisque setupFiles
s'exécute avant que le framework de test soit installé dans l'environnement, ce fichier script vous présente l'opportunité d'exécuter du code immédiatement après l'installation du framework de test dans l'environnement mais avant le code du test lui-même.
En d'autres termes, les modules setupFilesAfterEnv
sont destinés au code qui se répète dans chaque fichier de test. L'installation du framework de test rend les globaux Jest, les objets jest
et l'expect
accessibles dans les modules. Par exemple, vous pouvez ajouter des comparateurs supplémentaires depuis la bibliothèque jest-extended
ou appeler les hooks de paramétrage et de démontage :
const matchers = require('jest-extended');
expect.extend(matchers);
afterEach(() => {
jest.useRealTimers();
});
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
setupFilesAfterEnv: ['<rootDir>/setup-jest.js'],
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
setupFilesAfterEnv: ['<rootDir>/setup-jest.js'],
};
export default config;
Si votre script de configuration est un module CJS, il peut exporter une fonction asynchrone. Jest appellera la fonction et attendra son résultat. Cela peut être utile pour récupérer des données de manière asynchrone. Si le fichier est un module ESM, il suffit d'utiliser le await de niveau supérieur pour obtenir le même résultat.
showSeed
[boolean]
Par défaut : false
The equivalent of the --showSeed
flag to print the seed in the test report summary.