Nota del traduttore
Questa è la traduzione del file watch-mode.md. Qui c'è il link dove si confrontano le differenze tra commit di riferimento di questa traduzione e l'ultimo commit di AVA sul branch master (Se si clicca sul link, e non si vede il file watch-mode.md
nella lista dei file modificati, questa traduzione è aggiornata).
AVA integra un sistema intelligente di watch. Supervisiona le modifiche ai file ed esegue solamente i test che ne sono affetti.
Puoi abilitare la modalità watch usando il parametro --watch
o -w
. Quindi se hai AVA installato globalmente:
$ ava --watch
Se hai configurato AVA nel tuo package.json
così:
{
"scripts": {
"test": "ava"
}
}
Puoi eseguire:
$ npm test -- --watch
Puoi anche impostare uno specifico script:
{
"scripts": {
"test": "ava",
"watch:test": "ava --watch"
}
}
E poi esegui:
$ npm run watch:test
Finalmente puoi configurare AVA per utilizzare sempre il watch mode impostando l'opzione watch
nella sezione ava
del tuo file package.json
:
{
"ava": {
"watch": true
}
}
Non dimenticare che il reporter TAP non è disponibile quando si utilizza il watch mode.
AVA utilizza chokidar
come watcher per i file. Qualora vedessi avvertimenti riguardo dipendenze opzionali che non possono essere installate, il watcher funzionerà comunque. Qualora ci dovessero essere problemi con l'installazione di chokidar
fai riferimento alla sezione Problemi di installazione nella documentazione di chokidar
su come risolverli.
AVA distingue tra i file sorgente e i file di test. Come puoi immaginare i file di test contengono i tuoi test. I file sorgente sono tutti quei file che sono richiesti per eseguire i test, che siano file sorgente o file fixtures.
AVA controlla automaticamente le modifiche nei file di test, i file snapshot, package.json
, ed ogni file .js
. Ignorerà invece file in [specifiche cartelle]
(https://github.com/novemberborn/ignore-by-default/blob/master/index.js) come predefinito nel modulo ignore-by-default
.
Puoi configurare il pattern per i file sorgente nella sezione ava
del tuo file package.json
, utilizzando l'opzione source
.
Puoi specificare pattern per file in cartelle che verrebbero altrimenti ignorati, es. puoi specificare node_modules/some-dependency/*.js
per tutti i file .js
nella cartella node_modules/some-dependency
come file sorgente, anche se normalmente i file in node_modules
sono ignorati. Tieni presente che solamente nomi esatti di cartella verranno considerati, quindi {bower_components,node_modules}/**/*.js
non funzionerà.
Se i tuoi test devono scrivere su disco potrebbero entrare in conflitto con il watcher, che farà ri-eseguire i tuoi test. Se questo avvenisse dovrai configurare correttamente i pattern per i file sorgente.
AVA traccia quale da file sorgente ogni tuo test dipende. Se cambi questa dipendenza solamente il file di test che dipende verrà rieseguito. AVA ri-eseguirà tutti i test se non può determinare quale file di test dipende dal file sorgente modificato.
Il tracciamento delle dipendenze funziona per i moduli richiesti. Estensioni personalizzate e transpiler sono supportati, a patto che vengano aggiunti nel file package.json
e non dall'interno dei tuoi file di test. I file caricati tramite il modulo fs
non verranno tracciati.
Il modificatore .only
disabilità l'algoritmo di tracciamento delle dipendenze in watch mode. Quando avviene un cambiamento, tutti i test con il modificatore .only
verranno rieseguiti, a prescindere dalla dipendenza dei test dal file sorgente modificato.
Se esegui AVA nel tuo ambiente di CI con il watch mode attivo, l'esecuzione terminerà con un errore (Error : Watch mode is not available in CI, as it prevents AVA from terminating.
). AVA non deve essere eseguito con l'opzione --watch
(-w
) quando in un ambiente di CI poichè è previsto che processi in un ambiente di CI vengano terminati quando completati, mentre AVA con l'opzione --watch
non farà terminare il processo.
Puoi rapidamente rieseguire tutti i testi digitando r sulla linea di comando, seguito da Invio.
Puoi aggiornare snapshots che falliscono digitando u sulla linea di comando, seguito da Invio.
Qualche volta la modalità watch può comportarsi in modo anomalo, rieseguendo tutti i test quando invece pensavi che sarebbe stato eseguito un unico test. Per capirne il motivo puoi abilitare la modalità debug. È consigliato utilizzare il reporter verbose
:
This will work best with the verbose reporter:
$ DEBUG=ava:watcher npm test -- --watch --verbose
Su Windows scrivi:
$ set DEBUG=ava:watcher
$ npm test -- --watch --verbose
La modalità watch è una funzionalità relativamente nuova e ci potrebbero essere ancora alcuni difetti. Per favore notifica qualsiasi problema che riscontri. Grazie!