🃏 Jest 19: Modalità Watch Immersiva e Miglioramenti alla Piattaforma di Test
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Oggi siamo lieti di rilasciare la versione 19 della piattaforma di test Jest. È il rilascio più grande di Jest finora e siamo entusiasti di mostrarvi ciò che abbiamo costruito negli ultimi due mesi:
Modalità Watch Immersiva
Abbiamo riscritto completamente la modalità watch per renderla istantanea e più estensibile. Il risultato è un'esperienza veramente immersiva: i test vengono rieseguiti immediatamente dopo una modifica ai file e abbiamo semplificato la selezione dei test corretti.
Aggiornamenti agli Snapshot
Abbiamo apportato alcune modifiche al formato degli snapshot. Non effettuiamo spesso cambiamenti simili e li consideriamo solo se effettivamente migliorano il funzionamento degli snapshot. Oltre a introdurre un numero di versione per gli snapshot, abbiamo accumulato diverse modifiche che volevamo apportare da tempo:
-
Abbiamo rimosso il prefisso "test" dai nomi degli snapshot generati dalle chiamate
testoitdi primo livello -
Migliorata la stampa degli elementi React per causare meno cambiamenti quando viene modificata l'ultima proprietà di un elemento
-
Migliorato il meccanismo di escape dei caratteri per renderlo più affidabile
Prima:
exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;
Dopo (nessun prefisso "test", migliore rendering JSX, intestazione di versione):
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;
Abbiamo ritenuto fosse il momento giusto per introdurre snapshot versionati, garantendo che tutti gli sviluppatori utilizzino una versione compatibile di Jest. Ecco come ti avvisiamo della necessità di aggiornare gli snapshot:

Assicurati di annullare eventuali modifiche locali prima dell'aggiornamento per una transizione fluida ed evitare di includere cambiamenti indesiderati da test falliti nei nuovi snapshot.
Migliorata la Stampa dei Test Saltati
I test saltati vengono ora stampati in una singola riga invece di mostrare ogni singolo caso quando si utilizza la modalità verbose o un singolo test suite. Ciò ti permetterà di concentrarti sui test attualmente rilevanti e occupa molto meno spazio!

Nuovi Argomenti CLI
Jest 19 introduce due nuovi argomenti relativi alla coverage utilizzabili da CLI:
-
--collectCoverageFrom -
--coverageDirectory
Ora segnaliamo anche errori per argomenti CLI non validi invece di ignorarli. Ma ti supportiamo con messaggi d'errore utili come quello qui sotto, ad esempio quando provi ad eseguire jest --watc:

Miglioramenti a expect
Siamo vicini alla quasi completa parità di funzionalità con il pacchetto npm expect. Michael Jackson, l'autore del pacchetto, ha accettato di donarlo al progetto Jest, il che significa che jest-matchers verrà rinominato in expect. Poiché la nostra versione di expect non è pensata per essere completamente compatibile, Christopher Chedeau sta lavorando a un codemod per rendere la transizione indolore. Christopher ha anche apportato numerosi miglioramenti a jest-matchers che ne consentono l'uso al di fuori di Jest, perfino all'interno dei browser.
eslint-plugin-jest – il nostro plugin ESLint
Grazie a Jonathan Kim Jest ha finalmente il suo plugin ESLint ufficiale. Offre tre regole:
-
no-disabled-tests - impedisce di commettere accidentalmente test disabilitati.
-
no-focused-tests - previene il commit di test focalizzati che disabilitano tutti gli altri test nella stessa suite.
-
no-identical-title - vieta titoli identici nei nomi dei test.
Puoi installarlo con npm install --save-dev eslint-plugin-jest o yarn add --dev eslint eslint-plugin-jest e attivarlo aggiungendo {"plugins": ["jest"]} alla tua configurazione ESLint.
Nuovo pacchetto pubblico: jest-validate
Durante la refactoring del codice di validazione e normalizzazione per la configurazione di Jest, siamo rimasti così soddisfatti del nuovo sistema di messaggi d'errore che l'abbiamo estratto in un modulo separato per condividerlo con tutti. Con Jest 19 diamo il benvenuto a jest-validate nella nostra famiglia di pacchetti autonomi.
jest-validate è uno strumento generico per la validazione delle configurazioni che offre avvisi, errori e messaggi di deprecazione nei tuoi strumenti JavaScript. Mostra esempi chiari di configurazioni corrette e include un'API semplice ma potente. Speriamo sia un'ottima aggiunta ai vostri progetti!

Siamo lieti di annunciare che jest-validate convalida le opzioni di configurazione di prettier dalla v0.12. Sentitevi liberi di integrarlo nei vostri progetti, provatelo, inviateci feedback e miglioratelo tramite pull request su GitHub.
Matcher asimmetrici migliorati
Abbiamo spostato l'implementazione dei matcher asimmetrici da Jasmine a Jest, consentendoci di migliorarne l'esperienza utente. Ora i matcher asimmetrici hanno una formattazione più elegante, abbiamo aggiunto il nuovo matcher expect.stringContaining() e li abbiamo combinati con expect.toMatchObject() per sfruttare il meglio di entrambi:

Mock manuali più efficaci
Con questa release, i mock manuali funzionano finalmente con cartelle nidificate. Ad esempio __mocks__/react-native/Libraries/Text/Text.js ora funziona come previsto. Abbiamo anche risolto problemi con mock virtuali e dipendenze transitive, e migliorato moduleNameMapper per non sovrascrivere i mock quando più pattern puntano allo stesso file.
Modifiche di Rottura
Come parte della pulizia del codice, abbiamo rimosso l'opzione di configurazione mocksPattern mai supportata ufficialmente. Abbiamo anche rinominato testPathDirs in roots per chiarirne meglio la funzione. Il valore predefinito di roots è ["<rootDir>"] e può essere personalizzato con più directory. L'opzione rootDir è stata principalmente un token per altre configurazioni, e questo cambiamento rende la configurazione di Jest più chiara.
Documentazione rinnovata
Come avrete notato, Hector Ramos e Kevin Lacker hanno dato alla documentazione di Jest una nuova veste. Abbiamo riorganizzato il sito separando Documentazione e API in pagine distinte:
-
Nella sezione Documentazione troverai un'introduzione a Jest, inclusi Primi passi e Test di codice asincrono, oltre a guide utili come Test con snapshot, Test di app React Native, Utilizzo con webpack, Migrazione a Jest e molto altro!
-
La sezione API elenca invece tutti i metodi disponibili esposti da Jest: gli oggetti
expectejest, funzioni mock, globali, insieme alle opzioni di configurazione da package.json e da CLI.
La homepage è stata completamente riprogettata per descrivere meglio l'essenza di Jest: "Piattaforma di testing a configurazione zero". Abbiamo anche ottimizzato la lettura su dispositivi mobili. Per gli utenti RSS – forniamo finalmente un feed per il nostro blog.
Aggiornamenti dalla community
-
Adoriamo questo talk: "Introduzione a Jest" di Vas Boroviak.
-
Seguici su Twitter: @jestjs_.
-
Il core team di Jest si sincronizza settimanalmente per discutere problemi correnti e futuri. Se vuoi contribuire a Jest, faccelo sapere, invia qualche pull request e unisciti ai nostri meeting settimanali.
-
I fantastici ingegneri di Artsy hanno descritto Jest nel loro stack frontend 2017.
-
Stephen Scott ha scritto un articolo dettagliato sul testing di componenti React valutando pro e contro dei diversi approcci.
-
Usare Jest con vue.js è diventato molto più semplice grazie al post di Cristian Carlesso.
-
Michele Bertoli ha scritto un libro sui design pattern e best practice di React con un'intera sezione dedicata a Jest.
-
Il comando
--notifymigliorato mostra una notifica di sistema che permette ora di rieseguire i test direttamente dalla notifica. Questa è una funzionalità reale di Jest, stiamo solo verificando se stai ancora leggendo questo post! -
Jest è ora parte di react-boilerplate.
-
Scopri i poteri nascosti dei matcher di Jest.
Siamo lieti di annunciare che il test runner ava ha adottato parti della piattaforma Jest, integrando il supporto base per gli snapshot e utilizzando pretty-format. Consolidare l'infrastruttura di testing semplifica l'apprendimento e favorisce la condivisione delle best practice. Non vediamo l'ora di imparare dalle librerie di test esistenti.
Il changelog completo è disponibile su GitHub. Jest 19 è stato un vero sforzo della comunità JavaScript, con il contributo di 17 persone a questa release. Ringraziamo ognuno di voi per aver contribuito a rendere questo progetto fantastico.
Questo articolo del blog è stato scritto da Rogelio Guzman e Michał Pierzchała.
