Introduzione
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Installa Jest utilizzando il tuo gestore di pacchetti preferito:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev jest
yarn add --dev jest
pnpm add --save-dev jest
bun add --dev jest
Iniziamo scrivendo un test per una funzione ipotetica che somma due numeri. Per prima cosa, crea un file sum.js:
function sum(a, b) {
return a + b;
}
module.exports = sum;
Poi, crea un file chiamato sum.test.js. Questo conterrà il nostro test effettivo:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Aggiungi la seguente sezione al tuo package.json:
{
"scripts": {
"test": "jest"
}
}
Infine, esegui yarn test o npm test e Jest mostrerà questo messaggio:
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
Hai appena scritto con successo il tuo primo test utilizzando Jest!
Questo test ha utilizzato expect e toBe per verificare che due valori fossero identici. Per scoprire altre funzionalità di test di Jest, consulta Utilizzo dei Matchers.
Esecuzione da riga di comando
Puoi eseguire Jest direttamente dalla CLI (se disponibile globalmente nel tuo PATH, ad esempio tramite yarn global add jest o npm install jest --global) con varie opzioni utili.
Ecco come eseguire Jest sui file corrispondenti a my-test, utilizzando config.json come file di configurazione e mostrando una notifica nativa del sistema operativo al termine:
jest my-test --notify --config=config.json
Se desideri saperne di più sull'esecuzione di jest da riga di comando, consulta la pagina Opzioni CLI di Jest.
Configurazione aggiuntiva
Genera un file di configurazione di base
In base al tuo progetto, Jest ti porrà alcune domande e creerà un file di configurazione base con una breve descrizione per ogni opzione:
- npm
- Yarn
- pnpm
- Bun
npm init jest@latest
yarn create jest
pnpm create jest
bunx create-jest
Utilizzo con Babel
Per utilizzare Babel, installa le dipendenze richieste:
- 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 per la tua versione corrente di Node creando un file babel.config.js nella root del progetto:
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
La configurazione ideale per Babel dipenderà dal tuo progetto. Per maggiori dettagli, consulta la documentazione di Babel.
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: {},
};
Utilizzo con webpack
Jest può essere utilizzato in progetti che impiegano webpack per gestire asset, stili e compilazione. Webpack presenta alcune sfide uniche rispetto ad altri strumenti. Fai riferimento alla guida per webpack per iniziare.
Utilizzo con Vite
Jest può essere utilizzato in progetti che impiegano vite per servire il codice sorgente tramite ESM nativo e fornire strumenti frontend. Vite è uno strumento con approccio opinionato e offre flussi di lavoro pronti all'uso. Tuttavia, Jest non è completamente supportato da Vite a causa del funzionamento del suo sistema di plugin. Esistono alcuni esempi funzionanti per un'integrazione nativa con Jest tramite vite-jest, ma dato che il supporto non è completo, ti consigliamo di leggere le limitazioni di vite-jest. Per iniziare, consulta la guida di Vite.
Utilizzo con Parcel
Jest può essere utilizzato in progetti che impiegano parcel-bundler per gestire asset, stili e compilazione, simile a webpack. Parcel non richiede alcuna configurazione. Fai riferimento alla documentazione ufficiale per iniziare.
Utilizzo con TypeScript
Tramite babel
Jest supporta TypeScript tramite Babel. Per prima cosa, assicurati di aver seguito le istruzioni su come utilizzare Babel. Successivamente, installa @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
Poi aggiungi @babel/preset-typescript all'elenco dei preset nel tuo babel.config.js.
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
Tuttavia, ci sono alcune limitazioni nell'utilizzo di TypeScript con Babel. Poiché il supporto di TypeScript in Babel è puramente di transpilazione, Jest non effettuerà il controllo dei tipi durante l'esecuzione dei test. Se desideri questa funzionalità, puoi usare ts-jest oppure eseguire separatamente il compilatore TypeScript tsc (o come parte del tuo processo di build).
Tramite ts-jest
ts-jest è un preprocessore TypeScript con supporto alle source map per Jest che ti permette di usare Jest per testare progetti scritti in 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
Affinché Jest possa transpilare TypeScript con ts-jest, potrebbe essere necessario creare anche un file di configurazione.
Definizioni dei tipi
Esistono due modi per avere le API globali di Jest tipizzate per file di test scritti in TypeScript.
Puoi usare le definizioni dei tipi incluse in Jest che si aggiorneranno ad ogni aggiornamento di Jest. Installa il pacchetto @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 le API da esso:
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 documentazione aggiuntiva sull'utilizzo di describe.each/test.each e delle mock functions.
Oppure puoi scegliere di installare il pacchetto @types/jest. Fornisce i tipi per le globali di Jest senza bisogno di importarle.
- 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
@types/jest è una libreria di terze parti mantenuta su DefinitelyTyped, quindi le funzionalità o versioni più recenti di Jest potrebbero non essere ancora supportate. Cerca di far corrispondere le versioni di Jest e @types/jest il più possibile. Ad esempio, se stai usando Jest 27.4.0, installare @types/jest nella versione 27.4.x è l'ideale.
Utilizzo con ESLint
Jest può essere usato con ESLint senza ulteriori configurazioni purché importi gli helper globali di Jest (describe, it, ecc.) da @jest/globals prima di usarli nel tuo file di test. Ciò è necessario per evitare errori no-undef da ESLint, che non riconosce le globali di Jest.
Se preferisci evitare queste importazioni, puoi configurare il tuo ambiente ESLint per supportare queste globali aggiungendo l'ambiente jest:
{
"overrides": [
{
"files": ["tests/**/*"],
"env": {
"jest": true
}
}
]
}
Oppure usa eslint-plugin-jest, che ha un effetto simile:
{
"overrides": [
{
"files": ["tests/**/*"],
"plugins": ["jest"],
"env": {
"jest/globals": true
}
}
]
}