Opzioni CLI di Jest
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
- Yarn
- pnpm
- Bun
npm test -- -u -t="ColorPicker"
yarn test -u -t="ColorPicker"
pnpm test -u -t="ColorPicker"
bun run 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
Le opzioni CLI hanno la precedenza sui valori della Configurazione.
- Supporto per argomenti camelCase e trattini
- Opzioni
- Riferimento
jest <regexForTestFiles>--bail[=<n>]--cache--changedFilesWithAncestor--changedSince--ci--clearCache--clearMocks--collectCoverageFrom=<glob>--colors--config=<path>--coverage[=<boolean>]--coverageDirectory=<path>--coverageProvider=<provider>--debug--detectOpenHandles--env=<environment>--errorOnDeprecated--expand--filter=<file>--findRelatedTests <spaceSeparatedListOfSourceFiles>--forceExit--help--ignoreProjects <project1> ... <projectN>--injectGlobals--json--lastCommit--listTests--logHeapUsage--maxConcurrency=<num>--maxWorkers=<num>|<string>--noStackTrace--notify--onlyChanged--onlyFailures--openHandlesTimeout=<milliseconds>--outputFile=<filename>--passWithNoTests--projects <path1> ... <pathN>--randomize--reporters--resetMocks--restoreMocks--roots--runInBand--runTestsByPath--seed=<num>--selectProjects <project1> ... <projectN>--setupFilesAfterEnv <path1> ... <pathN>--shard--showConfig--showSeed--silent--testEnvironmentOptions=<json string>--testLocationInResults--testMatch glob1 ... globN--testNamePattern=<regex>--testPathIgnorePatterns=<regex>|[array]--testPathPatterns=<regex>--testRunner=<path>--testSequencer=<path>--testTimeout=<number>--updateSnapshot--useStderr--verbose--version--waitForUnhandledRejections--watch--watchAll--watchman--workerThreads
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.
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.
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.
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.
// 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.
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);
});
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.
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
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
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
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.
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.
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.
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.
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.
Questa è una funzionalità sperimentale. Consulta l'opzione di configurazione workerThreads per maggiori dettagli.