Vai al contenuto principale
{ "message": "Versione: Prossima", "description": "" }

Introduzione

Traduzione Beta Non Ufficiale

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 install --save-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 init jest@latest

Utilizzo con Babel

Per utilizzare Babel, installa le dipendenze richieste:

npm install --save-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:

babel.config.js
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.

babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.

return {
// ...
};
};
nota

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:

jest.config.js
module.exports = {
transform: {},
};

Utilizzo con bundler

Nella maggior parte dei casi non è necessario alcun intervento particolare per lavorare con diversi bundler, tranne quando si utilizzano plugin o configurazioni che generano file o hanno regole personalizzate di risoluzione dei file.

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 non è supportato da Vite a causa di incompatibilità con il sistema di plugin di Vite.

Esistono esempi di integrazione tra Jest e Vite nella libreria vite-jest. Tuttavia, questa libreria non è compatibile con versioni di Vite successive alla 2.4.2.

Un'alternativa è Vitest che offre un'API compatibile con Jest.

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 install --save-dev @babel/preset-typescript

Poi aggiungi @babel/preset-typescript all'elenco dei preset nel tuo babel.config.js.

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 install --save-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 install --save-dev @jest/globals

E importa le API da esso:

sum.test.ts
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);
});
});
suggerimento

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 install --save-dev @types/jest
info

@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:

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',
},
},
]);

Oppure usa eslint-plugin-jest, che ha un effetto simile:

{
"overrides": [
{
"files": ["tests/**/*"],
"plugins": ["jest"],
"env": {
"jest/globals": true
}
}
]
}