Vai al contenuto principale

Il 2016 in Jest

· 9 min di lettura
Traduzione Beta Non Ufficiale

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:

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 pit a favore di it o test e mockImpl a favore di jest.fn() o mockImplementation.

  • Breaking: Rinominato --jsonOutputFile in --outputFile.

  • Breaking: Aggiornato testRegex per includere file test.js e spec.js.

  • Breaking: Sostituito scriptPreprocessor con la nuova opzione transform.

  • Breaking: La funzione testResultsProcessor ora deve restituire i risultati modificati.

  • Potentially Breaking: Risoluzione corretta di snapshotSerializers, setupFiles, transform, testRunner e testResultsProcessor con un algoritmo di risoluzione invece di usare path.resolve. Ciò significa principalmente che <rootDir> non è più necessario per queste opzioni.

  • Added: pretty-format e jest-editor-support sono 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.resetAllMocks che sostituisce jest.clearAllMocks.

  • Added: --json ora include informazioni sui singoli test all'interno di un file.

  • Fixed: Rejection di promise non gestite in test.concurrent.

  • Fixed: babel-plugin-jest-hoist quando si usa jest.mock con tre argomenti.

  • Fixed: Il globale JSON in jest-environment-node ora 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% Failed nella 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.concurrent funziona 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-node funzionano 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 in babel-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 a react-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.