Jest 23: 🔥 Lynrask testing med glede
This page was AI-translated by PageTurner (beta). Not officially endorsed by the project. Found an error? Report issue →
I dag gleder vi oss over å kunngjøre Jest 23 - vår største hovedutgivelse noensinne! Sammen med over 100 bidragsytere har vi levert en haug av funksjoner og feilrettinger. Takk til alle i fellesskapet for å hjelpe til med å gjøre JavaScript-testing til en glede.
Vi vil også ønske både Babel og webpack velkommen til Jest-fellesskapet! Etter å ha konvertert fra Mocha til Jest 23 Beta, reduserte webpack sin totale testtidsbruk 6 ganger - fra over 13 minutter til 2 minutter og 20 sekunder. #blazingmeansgood
Her er noen av høydepunktene og bruddendringene i Jest 23.
Se endringsloggen for fullstendig liste.
Interaktivt øyeblikksbilde-modus
Vi har lagt til en ny standardvalg i overvåkingsmenyen som vi kaller Interaktiv øyeblikksbilde-modus. Denne nye modusen lar deg gå gjennom hvert feilende øyeblikksbilde i hver feilende testsuite, vurdere de mislykkede øyeblikksbildene og velge å oppdatere eller hoppe over hvert enkelt individuelt.

Se dokumentasjonen for Interaktiv øyeblikksbilde-modus her.
Egenskapssamsvar for øyeblikksbilder
Objekter du tar øyeblikksbilder av inneholder ofte genererte verdier som datoer og ID-er. Jest lar deg nå sende egenskaper til øyeblikksbilde-samsvaret som spesifiserer datastrukturen i stedet for de eksakte verdiene. Disse egenskapssamsvarene blir deretter verifisert før samsvartstypen (i stedet for verdien) serialiseres, noe som gir deg konsistente øyeblikksbilde-resultater på tvers av testkjøringer.

Se den oppdaterte dokumentasjonen for toMatchSnapshot eller veiledningen for egenskapssamsvar for mer informasjon.
Egendefinerte asynkrone samsvar
Vi støtter nå asynkrone samsvar med expect.extends! Asynkrone samsvar returnerer et Promise slik at du kan await på at samsvaret løses. Som eksempel:

Dokumentasjon tilgjengelig her.
Egendefinerte asynkrone samsvar
Asynkrone samsvar er et flott verktøy når du bare bryr deg om asynkron likhet. For eksempel når venstre side forventes å være et objekt med en delmengde av egenskaper på høyre side, i stedet for en eksakt match. Jest leverer en rekke asynkrone samsvar ut av boksen, og i denne utgivelsen introduserer vi egendefinerte asynkrone samsvar.

Jest Each
@mattphillipsio har donert jest-each-pakken til Jest Core (takk Matt!). jest-each er et bibliotek inspirert av mocha-each og Spock Data Tables som lar deg definere en tabell med testtilfeller, og deretter kjøre en test for hver rad med de angitte kolonneverdiene. Vi støtter både array-typer og malstrenger for alle varianter av describe og test. Dokumentasjon finnes her, og for de som ikke bruker Jest 23 ennå, publiserer vi fortsatt jest-each separat!

Kjempe stor takk til Prettier for at de fikset tabellformateringen så raskt (se Prettier 1.13)!
Nye matchere
Vi legger kun til matchere i kjernen hvis vi tror de vil være nyttige for et stort antall brukere i Jest-miljøet, og lar flertallet av matchere være til fellesskapet (se jest-extended). Noen matchere kvalifiserer seg til kjernen, og Jest 23 legger til:
-
nthCalledWith
-
toReturn
-
toReturnTimes
-
toReturnWith
-
lastReturnedWith
-
nthReturnedWith
-
toStrictEqual

Se oppdaterte expect-dokumenter her.
Feilsøking av hengende tester
Et vanlig problem vi ser i issuetracker er "Jest" som henger etter testkjøring. Dette skyldes vanligvis at applikasjonskode etterlater åpne håndteringer som hindrer Jest fra å avslutte. Tidligere har brukere brukt --forceExit som løsning (anbefales ikke).
For å hjelpe med feilsøking av disse problemene, oppdager vi nå når Jest ikke avslutter:

Og vi tilbyr et nytt flagg --detectOpenHandles for å hjelpe med å finne åpne håndteringer:

Se oppdaterte CLI-dokumenter her.
Plugins for Watch-modus
Vi har omskrevet hele systemet for Watch-modus for å tillate tilpasning med egne plugins. Watch Mode Plugins gjør det nå mulig å koble seg til Jest-hendelser og tilby egne menyalternativer i Watch Mode-menyen. Alle standard Watch Mode-spørsmål er implementert som plugins i dette systemet, og dokumentasjon for å lage dine egne er tilgjengelig her.
Med denne endringen kan vi nå også gjeninnføre typeahead-støtte som Watch Mode Plugin via jest-watch-typeahead!

Se jest-watch-typeahead for dokumentasjon og installasjonsinstrukser. Kjempetakk til @rogeliog for det nye Watch Mode-plugin-systemet og jest-watch-typeahead-pluginet!
Brytende endringer
Som med hver større utgivelse gjør vi noen brytende endringer for å muliggjøre større fremtidige endringer og for å løfte testopplevelsen til et nytt nivå. Her er en liste over de største endringene du kan oppleve:
-
Krever testbeskrivelser og funksjoner: Vi feiler nå tester som ikke inkluderer både en funksjon og en beskrivelse.
-
Fjern udefinerte props fra React-snapshots: Mindre snapshots og korrekt React-atferd.
-
Fjerner utdaterte funksjoner: Vi fjernet mapCoverage siden det ikke lenger er nødvendig. I tillegg fjernet vi
jest.genMockFunctionogjest.genMockFnsiden disse er identiske medjest.fn. -
Legg til snapshot-navn i feilmeldinger: Vi la til snapshot-navnet (hvis oppgitt) i feilmeldingen for å gjøre det enklere å finne snapshots som feiler.
-
Erstatt mock-tidsstempler: Vi erstattet mock-tidsstempler med invocationCallOrder siden to eller flere mocks ofte kan ha samme tidsstempel, noe som gjør det umulig å teste kallrekkefølgen.
-
Legg til resultater i mock-snapshots: Vi la til mock-funksjonskallsresultater i snapshots slik at både kallene og utførelsesresultatene spores.
Andre forbedringer
-
Dekningsgrad i watch-modus: Dekningsgrad er nå begrenset til kun filer testet i watch-modus eller ved bruk av
--onlyChangedog--findRelatedTests. -
Versjonsdokumentasjon: Vi la til dokumentasjon for hver minneverdig utgivelse tilbake til Jest 22, og fjernet alle "Krever Jest X.X+" fra dokumentasjonen.
-
Bedre snapshot-sammendrag: Vi forbedret Snapshot Summary-utdata for å gjøre foreldede snapshots mer informative.
-
Bedre stack traces: Vi la til stack traces for asynkrone feil, timeout-feil, expect.assertions og kastede ikke-feil. Vi indikerer også kolonnen i koderammen!
-
Bedre React 16-støtte: Legger til snapshots-støtte for
React.Fragment,React.forwardRefogReact.createContext. -
Spor retur- og kasteverdier for mocks: Legger til
mock.resultssom inneholder returverdien eller kastet verdi for hvert mock-kall. -
Blazing 🔥: Vi la til et blazing-merke i README-en for å indikere at Jest er blodbra.
Jest Summit
Forrige uke møttes Jest Core Team for Jest Summit hos Facebook London hvor vi jobbet med og lanserte Jest 23, kunngjorde Jest Open Collective, og holdt en rekke foredrag:
-
Christoph Nakazawa – Intro
-
Aaron Abramov – Skrive meningsfulle tester
-
Rick Hanlon II – Blodrask snapshot-testing i Jest 23
-
Simen Bekkhus – Jests fantastiske feilmeldinger
-
Matt Phillips – Forbedre din Jest-opplevelse med fellesskapspakker
-
Michele Bertoli – Snapshot alt mulig
-
Jordan Eldredge – Webamp: Lær ved å etterligne
Hele foredraget er tilgjengelig her.
Oppslutningen var fantastisk, og vi fikk møte mange fra det London-baserte fellesskapet ansikt til ansikt. Takk til alle som deltok og for deres fortsatte støtte! Følg med i vårt neste innlegg der vi vil skissere Jest Open Collective og planene vi har for fremtiden.
Som alltid kunne ikke denne utgivelsen vært mulig uten dere, JavaScript-fellesskapet. Vi er utrolig takknemlige for at vi får muligheten til å jobbe med å forbedre JavaScript-testing sammen. Hvis du ønsker å bidra til Jest, ikke nøl med å kontakte oss på GitHub eller på Discord.
