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

Opzioni CLI di Jest

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Il runner da riga di comando jest offre numerose opzioni utili. Puoi eseguire jest --help per visualizzare tutte le opzioni disponibili. Molte delle opzioni mostrate di seguito possono essere combinate per eseguire i test esattamente come desideri. Tutte le opzioni di Configurazione di Jest possono anche essere specificate tramite CLI.

Ecco una panoramica sintetica:

Esecuzione da riga di comando

Esegui tutti i test (predefinito):

jest

Esegui solo i test specificati con un pattern o nome file:

jest my-test #or
jest path/to/my-test.js

Esegui test relativi ai file modificati basati su hg/git (file non commitati):

jest -o

Esegui test relativi a path/to/fileA.js e path/to/fileB.js:

jest --findRelatedTests path/to/fileA.js path/to/fileB.js

Esegui test che corrispondono a questo nome spec (corrispondenza con il nome in describe o test, essenzialmente).

jest -t name-of-spec

Esegui in modalità watch:

jest --watch #runs jest -o by default
jest --watchAll #runs all tests

La modalità watch permette anche di specificare il nome o percorso di un file per concentrarsi su un set specifico di test.

Utilizzo con package manager

Se esegui Jest tramite il tuo package manager, puoi comunque passare gli argomenti della riga di comando direttamente come argomenti di Jest.

Invece di:

jest -u -t="ColorPicker"

puoi usare:

npm test -- -u -t="ColorPicker"

Supporto per argomenti camelCase e trattini

Jest supporta sia il formato camelCase che quello con trattini. I seguenti esempi produrranno lo stesso risultato:

jest --collect-coverage
jest --collectCoverage

Gli argomenti possono anche essere miscelati:

jest --update-snapshot --detectOpenHandles

Opzioni

nota

Le opzioni CLI hanno la precedenza sui valori della Configurazione.


Riferimento

jest <regexForTestFiles>

Quando esegui jest con un argomento, questo viene trattato come un'espressione regolare per la corrispondenza con i file nel tuo progetto. È possibile eseguire suite di test fornendo un pattern. Solo i file che corrispondono al pattern verranno selezionati ed eseguiti. A seconda del terminale, potrebbe essere necessario racchiudere l'argomento tra virgolette: jest "my.*(complex)?pattern". Su Windows, dovrai usare / come separatore di percorso o escape \ come \\.

--bail[=<n>]

Alias: -b. Termina immediatamente la suite di test al verificarsi di n suite di test fallite. Il valore predefinito è 1.

--cache

Indica se utilizzare la cache. Predefinito true. Disabilita la cache con --no-cache.

{ "message": "attenzione", "description": "The default label used for the Caution admonition (:::caution)" }

La cache dovrebbe essere disabilitata solo in caso di problemi correlati alla memorizzazione. In media, disabilitare la cache rende Jest almeno due volte più lento.

Se desideri ispezionare la cache, usa --showConfig e controlla il valore di cacheDirectory. Se devi cancellare la cache, usa --clearCache.

--changedFilesWithAncestor

Esegue test relativi alle modifiche correnti e a quelle dell'ultimo commit. Si comporta in modo simile a --onlyChanged.

--changedSince

Esegue test relativi alle modifiche a partire dal branch o commit hash specificato. Se il branch corrente ha divergo da quello fornito, verranno testate solo le modifiche locali. Si comporta in modo simile a --onlyChanged.

--ci

Quando questa opzione è fornita, Jest presuppone di essere eseguito in un ambiente CI. Ciò modifica il comportamento quando viene rilevato un nuovo snapshot. Invece del comportamento normale di memorizzare automaticamente un nuovo snapshot, il test fallirà e richiederà di eseguire Jest con --updateSnapshot.

--clearCache

Elimina la directory della cache di Jest e termina senza eseguire i test. Eliminerà cacheDirectory se l'opzione viene passata, oppure la directory predefinita della cache di Jest. La directory predefinita della cache può essere trovata eseguendo jest --showConfig.

{ "message": "attenzione", "description": "The default label used for the Caution admonition (:::caution)" }

La pulizia della cache ridurrà le prestazioni.

--clearMocks

Cancella automaticamente chiamate, istanze, contesti e risultati dei mock prima di ogni test. Equivalente a chiamare jest.clearAllMocks() prima di ogni test. Questo non rimuove alcuna implementazione mock che potrebbe essere stata fornita.

--collectCoverageFrom=<glob>

Un pattern glob relativo a rootDir che corrisponde ai file da cui raccogliere le informazioni di copertura.

--colors

Forza l'evidenziazione dell'output dei risultati dei test anche se stdout non è un TTY.

nota

In alternativa puoi impostare la variabile d'ambiente FORCE_COLOR=true per abilitare forzatamente o FORCE_COLOR=false per disabilitare l'output colorato. L'uso di FORCE_COLOR sovrascrive tutti gli altri controlli di supporto colore.

--config=<path>

Alias: -c. Il percorso a un file di configurazione Jest che specifica come trovare ed eseguire i test. Se non è impostato alcun rootDir nella configurazione, si assume che la directory contenente il file di configurazione sia il rootDir del progetto. Può anche essere un valore codificato JSON che Jest utilizzerà come configurazione.

--coverage[=<boolean>]

Alias: --collectCoverage. Indica che le informazioni sulla copertura dei test devono essere raccolte e riportate nell'output. Passare opzionalmente <boolean> per sovrascrivere l'opzione impostata nella configurazione.

--coverageDirectory=<path>

La directory dove Jest dovrebbe scrivere i file di copertura.

--coverageProvider=<provider>

Indica quale provider dovrebbe essere utilizzato per strumentare il codice per la copertura. Valori consentiti: babel (predefinito) o v8.

--debug

Stampa informazioni di debug sulla tua configurazione Jest.

--detectOpenHandles

Tenta di raccogliere e stampare gli handle aperti che impediscono a Jest di terminare correttamente. Utilizzare nei casi in cui è necessario usare --forceExit per far terminare Jest e potenzialmente individuare la causa. Questo implica --runInBand, facendo eseguire i test in serie. Implementato usando async_hooks. Questa opzione ha un significativo impatto sulle prestazioni e dovrebbe essere usata solo per il debug.

--env=<environment>

L'ambiente di test utilizzato per tutti i test. Può puntare a qualsiasi file o modulo node. Esempi: jsdom, node o path/to/my-environment.js.

--errorOnDeprecated

Fa sì che le chiamate ad API deprecate generino messaggi di errore utili. Utile per semplificare il processo di aggiornamento.

--expand

Alias: -e. Usa questo flag per mostrare diff ed errori completi invece di una patch.

--filter=<file>

Percorso a un modulo che esporta una funzione di filtraggio. Questa funzione asincrona riceve un elenco di percorsi di test che possono essere manipolati per escludere test dall'esecuzione e deve restituire un oggetto con la forma { filtered: Array<string> } contenente i test che dovrebbero essere eseguiti da Jest. Particolarmente utile quando usato insieme a un'infrastruttura di test per filtrare test noti come non funzionanti.

my-filter.js
// This filter when applied will only run tests ending in .spec.js (not the best way to do it, but it's just an example):
const filteringFunction = testPath => testPath.endsWith('.spec.js');

module.exports = testPaths => {
const allowedPaths = testPaths.filter(filteringFunction); // ["path1.spec.js", "path2.spec.js", etc]

return {
filtered: allowedPaths,
};
};

--findRelatedTests <spaceSeparatedListOfSourceFiles>

Trova ed esegue i test che coprono un elenco di file sorgente separati da spazio passati come argomenti. Utile per l'integrazione con hook pre-commit per eseguire la quantità minima di test necessari. Può essere usato insieme a --coverage per includere una copertura dei test per i file sorgente, senza bisogno di argomenti duplicati --collectCoverageFrom.

--forceExit

Forza Jest a terminare dopo il completamento di tutti i test. Utile quando le risorse configurate dal codice dei test non possono essere adeguatamente ripulite.

{ "message": "attenzione", "description": "The default label used for the Caution admonition (:::caution)" }

Questa funzionalità è una soluzione d'emergenza. Se Jest non termina alla fine dell'esecuzione dei test, significa che sono ancora presenti risorse esterne attive o timer pendenti nel tuo codice. Si consiglia di rilasciare le risorse esterne dopo ogni test per garantire una chiusura pulita di Jest. Puoi usare --detectOpenHandles per aiutarti a identificare il problema.

--help

Mostra le informazioni di aiuto, simili a questa pagina.

--ignoreProjects <project1> ... <projectN>

Ignora i test dei progetti specificati. Jest utilizza l'attributo displayName nella configurazione per identificare ogni progetto. Se usi questa opzione, devi assegnare un displayName a tutti i tuoi progetti.

--injectGlobals

Inserisce le variabili globali di Jest (expect, test, describe, beforeEach etc.) nell'ambiente globale. Se imposti questo valore su false, dovrai importarle da @jest/globals, ad esempio:

import {expect, jest, test} from '@jest/globals';

jest.useFakeTimers();

test('some test', () => {
expect(Date.now()).toBe(0);
});
nota

Questa opzione è supportata solo utilizzando il test runner predefinito jest-circus.

--json

Stampa i risultati dei test in formato JSON. Questa modalità invierà tutti gli altri output dei test e i messaggi utente a stderr.

--lastCommit

Esegue tutti i test interessati dalle modifiche ai file nell'ultimo commit effettuato. Comportamento simile a --onlyChanged.

--listTests

Elenca tutti i file di test che Jest eseguirà in base agli argomenti forniti, quindi termina.

--logHeapUsage

Registra l'utilizzo della memoria heap dopo ogni test. Utile per il debug delle perdite di memoria. Usare insieme a --runInBand e --expose-gc in Node.js.

--maxConcurrency=<num>

Impedisce a Jest di eseguire più del numero specificato di test contemporaneamente. Influenza solo i test che utilizzano test.concurrent.

--maxWorkers=<num>|<string>

Alias: -w. Specifica il numero massimo di worker che il pool genererà per l'esecuzione dei test. In modalità esecuzione singola, il valore predefinito è il numero di core disponibili meno uno (per il thread principale). In modalità watch, il valore predefinito è la metà dei core disponibili per garantire che Jest non sovraccarichi il sistema. Può essere utile modificarlo in ambienti con risorse limitate come le CI, ma i valori predefiniti sono adeguati per la maggior parte dei casi d'uso.

Per ambienti con CPU disponibili variabili, puoi usare una configurazione percentuale: --maxWorkers=50%

--noStackTrace

Disabilita la visualizzazione dello stack trace nell'output dei risultati dei test.

--notify

Attiva le notifiche native del sistema operativo per i risultati dei test. Ideale quando vuoi concentrarti esclusivamente sui test JavaScript. Per visualizzare le notifiche, Jest richiede il pacchetto node-notifier, che deve essere installato separatamente.

--onlyChanged

Alias: -o. Cerca di identificare quali test eseguire in base ai file modificati nel repository corrente. Funziona solo se stai eseguendo test in un repository git/hg e richiede un grafo delle dipendenze statico (nessun require dinamico).

--onlyFailures

Alias: -f. Esegue i test falliti nell'esecuzione precedente.

--openHandlesTimeout=<milliseconds>

Quando --detectOpenHandles e --forceExit sono disattivati, Jest stamperà un avviso se il processo non è terminato correttamente dopo questo numero di millisecondi. Un valore di 0 disabilita l'avviso. Il valore predefinito è 1000.

--outputFile=<filename>

Scrive i risultati dei test in un file quando è specificata anche l'opzione --json. La struttura JSON restituita è documentata in testResultsProcessor.

--passWithNoTests

Consente alla suite di test di passare quando non vengono trovati file.

--projects <path1> ... <pathN>

Esegue test da uno o più progetti, trovati nei percorsi specificati; accetta anche glob di percorso. Questa opzione è l'equivalente CLI dell'opzione di configurazione projects.

nota

Se nei percorsi specificati vengono trovati file di configurazione, verranno eseguiti tutti i progetti specificati all'interno di quei file.

--randomize

Mescola l'ordine dei test all'interno di un file. Il mescolamento è basato sul seed. Vedi --seed=<num> per maggiori informazioni.

Il valore del seed viene visualizzato quando questa opzione è impostata. Equivalente all'impostazione dell'opzione CLI --showSeed.

jest --randomize --seed 1234
nota

Questa opzione è supportata solo utilizzando il test runner predefinito jest-circus.

--reporters

Esegue i test con i reporter specificati. Le opzioni del reporter non sono disponibili via CLI. Esempio con più reporter:

jest --reporters="default" --reporters="jest-junit"

--resetMocks

Reimposta automaticamente lo stato dei mock prima di ogni test. Equivale a chiamare jest.resetAllMocks() prima di ogni test. Rimuoverà le implementazioni finte da tutti i mock ma non ripristinerà la loro implementazione iniziale.

--restoreMocks

Ripristina automaticamente lo stato e l'implementazione dei mock prima di ogni test. Equivale a chiamare jest.restoreAllMocks() prima di ogni test. Ciò rimuoverà le implementazioni finte dei mock e ripristinerà la loro implementazione iniziale.

--roots

Un elenco di percorsi alle directory che Jest dovrebbe utilizzare per cercare file.

--runInBand

Alias: -i. Esegue tutti i test in serie nel processo corrente, anziché creare un pool di worker di processi figli che eseguono i test. Può essere utile per il debug.

--runTestsByPath

Esegue solo i test specificati con i loro percorsi esatti. Evita di convertirli in un'espressione regolare e di confrontarli con ogni singolo file.

Ad esempio, data la seguente struttura di file:

__tests__
└── t1.test.js # test
└── t2.test.js # test

Quando eseguito con un pattern, nessun test viene trovato:

jest --runTestsByPath __tests__/t

Output:

No tests found

Tuttavia, passando un percorso esatto verrà eseguito solo il test specificato:

jest --runTestsByPath __tests__/t1.test.js

Output:

PASS __tests__/t1.test.js
suggerimento

La corrispondenza regex predefinita funziona bene per esecuzioni piccole, ma diventa lenta se vengono forniti pattern multipli e/o contro molti test. Questa opzione sostituisce la logica di corrispondenza regex e ottimizza il tempo impiegato da Jest per filtrare file di test specifici.

--seed=<num>

Imposta un valore di seed che può essere recuperato in un file di test tramite jest.getSeed(). Il valore di seed deve essere compreso tra -0x80000000 e 0x7fffffff inclusi (-2147483648 (-(2 ** 31)) e 2147483647 (2 ** 31 - 1) in decimale).

jest --seed=1324
suggerimento

Se questa opzione non è specificata, Jest genererà il valore casualmente. Puoi usare il flag --showSeed per visualizzare il seed nel riepilogo del report dei test.

Jest utilizza internamente il seed per mescolare l'ordine di esecuzione delle suite di test. Se viene usata l'opzione --randomize, il seed viene utilizzato anche per mescolare l'ordine dei test all'interno di ogni blocco describe. Quando si affrontano test flaky, rieseguire con lo stesso seed può aiutare a riprodurre il fallimento.

--selectProjects <project1> ... <projectN>

Esegue i test dei progetti specificati. Jest utilizza l'attributo displayName nella configurazione per identificare ogni progetto. Se usi questa opzione, devi assegnare un displayName a tutti i tuoi progetti.

--setupFilesAfterEnv <path1> ... <pathN>

Un elenco di percorsi a moduli che eseguono codice per configurare o preparare il testing framework prima di ogni test. Attenzione: i file importati dagli script di setup non verranno mockati durante i test.

--shard

La parte (shard) della suite di test da eseguire nel formato (?<shardIndex>\d+)/(?<shardCount>\d+).

shardIndex indica quale parte selezionare, mentre shardCount controlla in quante parti deve essere suddivisa la suite.

shardIndex e shardCount devono essere numeri positivi partendo da 1, e shardIndex deve essere minore o uguale a shardCount.

Quando shard è specificato, il testSequencer configurato deve implementare un metodo shard.

Ad esempio, per dividere la suite in tre parti, ciascuna esegue un terzo dei test:

jest --shard=1/3
jest --shard=2/3
jest --shard=3/3

--showConfig

Stampa la configurazione di Jest e termina l'esecuzione.

--showSeed

Visualizza il valore di seed nel riepilogo del report dei test. Vedi --seed=<num> per i dettagli.

Può essere impostato anche nella configurazione. Vedi showSeed.

--silent

Impedisce ai test di stampare messaggi tramite la console.

--testEnvironmentOptions=<json string>

Una stringa JSON con opzioni che verranno passate al testEnvironment. Le opzioni rilevanti dipendono dall'ambiente.

--testLocationInResults

Aggiunge un campo location ai risultati dei test. Utile se desideri segnalare la posizione di un test in un reporter.

nota

Nell'oggetto risultante, column è indicizzato a partire da 0 mentre line no.

{
"column": 4,
"line": 5
}

--testMatch glob1 ... globN

I pattern glob che Jest utilizza per rilevare i file di test. Consulta la configurazione testMatch per i dettagli.

--testNamePattern=<regex>

Alias: -t. Esegue solo i test il cui nome corrisponde all'espressione regolare. Ad esempio, supponi di voler eseguire solo i test relativi all'autorizzazione che avranno nomi come 'GET /api/posts with auth', puoi usare jest -t=auth.

suggerimento

L'espressione regolare viene confrontata con il nome completo, che combina il nome del test e tutti i blocchi describe che lo contengono.

--testPathIgnorePatterns=<regex>|[array]

Singola espressione regolare o array di espressioni testate contro tutti i percorsi dei test prima dell'esecuzione. Contrariamente a --testPathPatterns, esegue solo i test il cui percorso NON corrisponde alle espressioni fornite.

Per passare un array, usa parentesi escape e regex delimitate da spazi come \(/node_modules/ /tests/e2e/\). In alternativa, combina le regex in un'unica espressione tipo /node_modules/|/tests/e2e/. Questi due esempi sono equivalenti.

--testPathPatterns=<regex>

Espressione regolare confrontata con tutti i percorsi dei test prima dell'esecuzione. Su Windows, usa / come separatore di percorso o esegui l'escape di \ come \\.

--testRunner=<path>

Consente di specificare un test runner personalizzato.

--testSequencer=<path>

Consente di specificare un sequenziatore di test personalizzato. Vedi la configurazione testSequencer per dettagli.

--testTimeout=<number>

Timeout predefinito di un test in millisecondi. Valore predefinito: 5000.

--updateSnapshot

Alias: -u. Usa questo flag per rigenerare tutti gli snapshot che falliscono durante l'esecuzione dei test. Può essere combinato con un pattern di test suite o con --testNamePattern.

--useStderr

Reindirizza tutto l'output su stderr.

--verbose

Mostra i risultati dei singoli test con la gerarchia delle test suite.

--version

Alias: -v. Stampa la versione ed esce.

--waitForUnhandledRejections

Concede un ciclo dell'event loop per gestire rejectionHandled, uncaughtException o unhandledRejection.

Senza questo flag Jest potrebbe segnalare falsi positivi (es. rejection gestita segnalata come errore) o non segnalare rejection non gestite (o attribuirle al caso di test sbagliato).

Questa opzione può aggiungere un sovraccarico significativo per suite di test veloci.

--watch

Monitora le modifiche ai file e riesegue i test correlati ai file cambiati. Per rieseguire TUTTI i test quando un file cambia, usa invece --watchAll.

suggerimento

Usa --no-watch (o --watch=false) per disabilitare esplicitamente la modalità watch se attivata con --watch. Negli ambienti CI, questo è gestito automaticamente.

--watchAll

Monitora le modifiche ai file e riesegue TUTTI i test quando qualcosa cambia. Per rieseguire solo i test dipendenti dai file modificati, usa --watch.

suggerimento

Usa --no-watchAll (o --watchAll=false) per disabilitare esplicitamente la modalità watch se attivata con --watchAll. Negli ambienti CI, questo è gestito automaticamente.

--watchman

Indica se utilizzare watchman per la scansione dei file. Il valore predefinito è true. Disabilitalo utilizzando --no-watchman.

--workerThreads

Indica se utilizzare i worker thread per la parallelizzazione. Per impostazione predefinita vengono utilizzati i processi figlio.

{ "message": "attenzione", "description": "The default label used for the Caution admonition (:::caution)" }

Questa è una funzionalità sperimentale. Consulta l'opzione di configurazione workerThreads per maggiori dettagli.