Hopp til hovedinnhold

Jest 23: 🔥 Lynrask testing med glede

· 7 min å lese
Ricky Hanlon
Ricky Hanlon
Unofficial Beta Translation

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.

Interaktiv øyeblikksbilde-modus i aksjon

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.

Egenskapssamsvar for øyeblikksbilder

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:

Egendefinerte asynkrone samsvar i aksjon

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.

Egendefinerte asynkrone samsvar i aksjon

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!

jest-each i aksjon

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

Nye matchere i aksjon

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:

Oppdager hengende tester

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

Kjører detectOpenHandles

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!

Typeahead-plugin i aksjon

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.genMockFunction og jest.genMockFn siden disse er identiske med jest.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 --onlyChanged og --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.forwardRef og React.createContext.

  • Spor retur- og kasteverdier for mocks: Legger til mock.results som 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:

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.