Il 2016 in Jest
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Il 2016 è stato un anno importante per il testing JavaScript con Jest. Nei primi sei mesi dell'anno abbiamo riscritto Jest e creato solide fondamenta per migliorare significativamente le prestazioni e l'esperienza degli sviluppatori nel testare codice JavaScript. Abbiamo tipizzato l'intera codebase con Flow, costruito numerosi test di integrazione per Jest stesso e adottato lerna per trasformare Jest da semplice framework in una piattaforma di Testing JavaScript senza sforzo.
Il nuovo react-test-renderer ha finalmente abilitato il testing dei componenti react-native. Tramite il preset jest-react-native (ora integrato direttamente in react-native) Jest funziona ora out-of-the-box per qualsiasi progetto React ed è preconfigurato in create-react-app e nei progetti react-native. Abbiamo integrato componenti chiave di Jest nel packager di react-native e l'innovativa funzionalità di snapshot testing è stata adottata anche al di fuori di Jest: è stata integrata in React Storybook come "storyshots" e sta venendo implementata in altri test runner come ava.
Il progetto pretty-format è stato riscritto con un focus sulle prestazioni per supportare la funzionalità di snapshot di Jest, è stato recentemente incluso nel monorepo di Jest e risulta utile anche in altri test runner. Oggi Jest è molto più una raccolta di idee e soluzioni per il testing che un'implementazione specifica di un framework di test.
Desidero ringraziare profondamente tutte le persone che hanno contribuito a Jest quest'anno, sia dalla comunità open source che da Facebook: Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang e altri 60 collaboratori. Diamo inoltre il benvenuto a Michał Pierzchała (@thymikee) come primo contributore esterno ufficiale di Jest. Sta svolgendo un ottimo lavoro nella gestione delle issue e delle PR sulla repository. Se desideri iniziare a contribuire a Jest, abbiamo diverse attività adatte ai nuovi contributori e siamo sempre felici di aiutarti sul nostro canale Discord.
repl.it con integrazione Jest
Amjad Massad ha creato un container Jest che ora permette di provare Jest direttamente nel browser. Puoi utilizzarlo d'ora in poi quando crei issue su GitHub per risolvere i problemi più rapidamente. Amjad e Haya stanno sviluppando repl.it per democratizzare la programmazione creando strumenti e piattaforme potenti ma semplici per educatori, studenti e sviluppatori. Stanno inoltre assumendo ingegneri di talento!
Aggiornamento dalla Community
Siamo incredibilmente onorati che oltre 100 aziende abbiano adottato Jest negli ultimi sei mesi. Aziende come Twitter, Pinterest, Paypal, nytimes, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago e Microsoft sono passate completamente o parzialmente a Jest per le loro esigenze di testing JavaScript. Grazie mille per aver dato una chance a questo progetto. Ringraziamo inoltre tutti coloro che hanno parlato di Jest a conferenze e meetup, e tutti coloro che stanno scrivendo blog post sull'efficacia di Jest nei loro progetti!
Ecco cosa è successo nella comunità negli ultimi due mesi:
-
Jason Bonta e Dmitrii Abramov hanno ridefinito la "testing pyramid" di cui si è discusso molto a Facebook.
-
jest-codemods ora permette di migrare facilmente da Mocha, Tape e Ava a Jest.
-
Il team React ha annunciato miglioramenti al react-test-renderer nella versione 15.4.0.
-
Orta Therox ha creato un'ottima integrazione vscode-jest e ha donato il codice per il supporto editoriale a Jest.
-
Pavithra Kodmad sta documentando l'adozione di Jest in Flipkart e condivide consigli per iniziare.
-
Kent C. Dodds ha scritto sulla migrazione a Jest in Paypal e Jason Brown ha descritto la migrazione a Jest.
-
Ben McCormick ha spiegato come risparmiare tempo con Jest.
-
Eric Clemmons ha parlato dell'integrazione tra snapshot e storybook.
-
Edvin Erikson ha descritto come ottenere output Tap in Jest.
-
jest-html porta il confronto degli snapshot nel tuo browser.
-
Si sono svolte interessanti discussioni su hackernews riguardo Jest.
-
La comunità ha avviato un dibattito sul futuro di enzyme.
-
Ruben Oostinga ha spiegato come combinare i matcher di chai e Jest.
-
Emil Ong ha analizzato perché "fare TDD sul frontend sembra inutile".
-
Nate Hunzaker ha descritto il testing end-to-end con Jest e Nightmare.
-
Usare Jest con Angular funziona senza problemi secondo Matthieu Lux.
-
È in corso una discussione stimolante sullo scopo dello snapshot testing.
-
Dmitrii ha pubblicato un nuovo video musicale con la sua band metal.
-
lazyspec aiuta a creare rapidamente smoke test quando si introducono test in codebase esistenti.
-
Patrick Stapfer ha tenuto un lightning talk su vim e Jest.
-
Mark Dalgleish ha commentato il valore dello snapshot testing.
Nuove funzionalità, modifiche e correzioni in Jest 17 e 18
Jest è stato creato inizialmente più di cinque anni fa e, in quanto framework datato, ha accumulato del debito tecnico. Per questo tendiamo a introdurre cambiamenti di rottura più frequentemente di quanto possa sembrare necessario: crediamo sia importante ridurre gradualmente il debito tecnico per garantire che Jest rimanga un progetto sostenibile a lungo termine. Non abbiamo annunciato Jest 17 con un blog post, quindi se non l'avete aggiornato nell'ultimo mese, potreste trovare utile il changelog.
-
Breaking: Rimosso
pita favore diitotestemockImpla favore dijest.fn()omockImplementation. -
Breaking: Rinominato
--jsonOutputFilein--outputFile. -
Breaking: Aggiornato
testRegexper includere filetest.jsespec.js. -
Breaking: Sostituito
scriptPreprocessorcon la nuova opzionetransform. -
Breaking: La funzione
testResultsProcessorora deve restituire i risultati modificati. -
Potentially Breaking: Risoluzione corretta di
snapshotSerializers,setupFiles,transform,testRunneretestResultsProcessorcon un algoritmo di risoluzione invece di usarepath.resolve. Ciò significa principalmente che<rootDir>non è più necessario per queste opzioni. -
Added:
pretty-formatejest-editor-supportsono stati integrati in Jest. -
Added: Aggiunti
expect.any,expect.anything,expect.objectContaining,expect.arrayContaining,expect.stringMatching. -
Added:
--testResultsProcessorè ora esposto tramite CLI. -
Added: Implementato il file watching in
jest-haste-map. -
Added: L'utilizzo di Jest in modalità watch può essere nascosto tramite
JEST_HIDE_USAGE. -
Added:
expect.assertions(number)che garantisce che venga effettuato un numero specifico di asserzioni in un test. -
Added: Funzionalità
.toMatchSnapshot(?string)per assegnare nomi agli snapshot. -
Added: Matchers
toMatchObject,toHaveProperty,toHaveLength. -
Added:
expect.extend. -
Added: Aggiunto supporto per serializzatori di snapshot personalizzati.
-
Added: I diff estesi ora sono compressi di default in snapshot e asserzioni. Aggiunto
--expand(o-e) per mostrare il diff completo. -
Added:
jest.resetAllMocksche sostituiscejest.clearAllMocks. -
Added:
--jsonora include informazioni sui singoli test all'interno di un file. -
Fixed: Rejection di promise non gestite in
test.concurrent. -
Fixed:
babel-plugin-jest-hoistquando si usajest.mockcon tre argomenti. -
Fixed: Il globale
JSONinjest-environment-nodeora proviene dal contesto vm invece che dal contesto genitore. -
Fixed: Jest non stampa più stack trace da babel.
-
Fixed: I timer fittizi vengono resettati quando viene chiamato
FakeTimers.useTimers(). -
Fixed: Le espressioni regolari sono ora correttamente escapate negli snapshot.
-
Fixed: Migliorata la formattazione di oggetti di grandi dimensioni.
-
Fixed:
NaN% Failednella notifica del sistema operativo quando si utilizza--notify. -
Fixed: La prima esecuzione dei test senza tempi memorizzati nella cache utilizzerà ora processi separati invece di eseguirli in banda.
-
Fixed: Confronti tra
Map/Set. -
Fixed:
test.concurrentfunziona ora con--testNamePattern. -
Fixed: Migliorato il matcher
.toContain. -
Fixed: Risoluzione corretta dei moduli con estensioni specifiche della piattaforma su react-native.
-
Fixed: Gli oggetti globali integrati in
jest-environment-nodefunzionano ora correttamente. -
Fixed: Creazione di oggetti mock nel contesto della vm invece che nel contesto genitore.
-
Fixed:
.babelrcè ora parte della chiave della cache di trasformazione inbabel-jest. -
Fixed: Parsing dei docblock con moduli haste.
-
Fixed: Uscita con il codice appropriato quando non si raggiunge la soglia di copertura.
-
Fixed: Jest ora cancella l'intero storico di scorrimento in modalità watch.
-
Deprecated:
jest-react-nativeè stato deprecato e ora reindirizza areact-native.
Piani per Jest nel primo semestre 2017
Sei mesi fa abbiamo condiviso i nostri piani per Jest e siamo felici di essere riusciti a realizzarne quasi tutti. Per i prossimi sei mesi, ecco cosa abbiamo in programma:
-
Feedback immediato: Integrazione con Nuclide e una modalità watch più veloce e migliorata.
-
Esperienza sviluppatori migliorata: nuove API per i mock e asserzioni potenziate.
-
Migliori prestazioni e consumo memoria: analisi di Jest e maggiore attenzione all'efficienza.
-
Miglioramenti agli snapshot: modalità di approvazione snapshot, evidenziazione sintattica e API migliorate per
react-test-renderer. -
Sito web: Rinnovamento del sito e della documentazione con aggiunta di un cheat sheet per Jest.
Non forniremo tempistiche o stime per queste funzionalità e potremmo non realizzarle tutte. Se desideri contribuire a realizzare queste innovazioni, inviaci issue e pull request con le tue idee: lavoriamo insieme per migliorare Jest nel 2017.
