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.

  • Aggiunta: 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.