Hopp til hovedinnhold

2016 med Jest

· 9 min å lese
Unofficial Beta Translation

This page was AI-translated by PageTurner (beta). Not officially endorsed by the project. Found an error? Report issue →

2016 ble et stort år for JavaScript-testing med Jest. I de første seks månedene omskrev vi Jest og bygde et solid fundament for å forbedre ytelsen og utvikleropplevelsen ved testing av JavaScript-kode betydelig. Vi flow-typet hele kodebasen, bygde en masse integrasjonstester for Jest selv og tok i bruk lerna for å gjøre Jest om fra et rammeverk til en Painless JavaScript Testing-plattform.

Den nyutviklede react-test-renderer muliggjorde endelig testing av react-native-komponenter. Gjennom jest-react-native-forhåndsinnstillingen (nå integrert direkte i react-native) fungerer Jest nå umiddelbart for alle React-prosjekter og er forhåndskonfigurert i create-react-app og react-native-prosjekter. Vi integrerte kjernedeler av Jest i react-native sin pakker, og den helt nye snapshot-testing-funksjonen har siden blitt brukt utenfor Jest: Den ble integrert med React Storybook som "storyshots" og tas i bruk av andre testrammeverk som ava.

pretty-format-prosjektet ble omskrevet med fokus på ytelse for å drive Jests snapshot-funksjonalitet, ble nylig slått sammen med Jests monorepo og er også nyttig i andre testrammeverk. I dag handler Jest mye mer om å samle ulike ideer og løsninger for testing enn om én spesifikk implementering av et testrammeverk.

Jeg vil gjerne takke alle som har bidratt til Jest i år, både fra det åpne kildemiljøet og hos Facebook: Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang og 60 flere personer. Vi vil også ønske Michał Pierzchała (@thymikee) velkommen som første offisielle eksterne bidragsyter til Jest. Han har gjort en fantastisk jobb med å håndtere issues og PR-er i repositoriet. Hvis du ønsker å bidra til Jest, har vi en rekke gode førstegangsoppgaver og vi hjelper alltid gjerne til på vår discord-kanal.

repl.it med Jest-integrering

Amjad Massad utviklet en Jest-container slik at du nå kan teste Jest direkte i nettleseren. Du kan bruke dette når du oppretter GitHub-issues, noe som bør hjelpe til med raskere feilsøking. Amjad og Haya bygger repl.it for å demokratisere programmering ved å utvikle kraftige, men enkle verktøy og plattformer for lærere, studenter og utviklere. De søker også dyktige ingeniører!

Fellesskapsoppdatering

Vi er utrolig takknemlige for at over 100 selskaper har tatt i bruk Jest de siste seks månedene. Selskaper som Twitter, Pinterest, Paypal, nytimes, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago og Microsoft har enten fullstendig eller delvis byttet til Jest for sine JavaScript-testbehov. Tusen takk for at dere gir dette prosjektet en sjanse. Vi vil også takke alle som har snakket om Jest på konferanser og møter, og alle som skriver blogginnlegg om hvordan Jest fungerer eller ikke fungerer for dem!

Her er det som skjedde i fellesskapet de siste to månedene:

Nye funksjoner, endringer og fikser i Jest 17 & 18

Jest ble opprinnelig laget for over fem år siden, og som et gammelt rammeverk har det samlet seg teknisk gjeld. Derfor gjør vi oftere bruddendringer enn det kan virke nødvendig: Vi mener det er viktig å gradvis redusere teknisk gjeld for å sikre at Jest som prosjekt forblir vedlikeholdbart på lang sikt. Vi kunngjorde ikke Jest 17 i et blogginnlegg, og hvis du ikke har oppgradert det den siste måneden, kan endringsloggen være nyttig.

  • Bruddendring: Fjernet pit til fordel for it eller test og mockImpl til fordel for jest.fn() eller mockImplementation.

  • Bruddendring: Endret --jsonOutputFile til --outputFile.

  • Bruddendring: Oppdatert testRegex til å inkludere test.js og spec.js-filer.

  • Bruddendring: Erstattet scriptPreprocessor med det nye transform-alternativet.

  • Bruddendring: testResultsProcessor-funksjonen må nå returnere de modifiserte resultatene.

  • Potensiell bruddendring: Løser nå snapshotSerializers, setupFiles, transform, testRunner og testResultsProcessor korrekt med en resolusjonsalgoritme i stedet for path.resolve. Dette betyr hovedsakelig at <rootDir> ikke lenger trengs for disse alternativene.

  • Lagt til: pretty-format og jest-editor-support ble slått sammen med Jest.

  • Lagt til: expect.any, expect.anything, expect.objectContaining, expect.arrayContaining, expect.stringMatching.

  • Lagt til: --testResultsProcessor er nå tilgjengelig via CLI.

  • Lagt til: Implementert filovervåkning i jest-haste-map.

  • Lagt til: Bruk av Jest i overvåkingsmodus kan skjules med JEST_HIDE_USAGE.

  • Lagt til: expect.assertions(number) som sikrer at et spesifisert antall påstander blir testet.

  • Lagt til: .toMatchSnapshot(?string)-funksjon for å navngi snapshots.

  • Lagt til: Matchere toMatchObject, toHaveProperty, toHaveLength.

  • Lagt til: expect.extend.

  • Lagt til: Støtte for egendefinerte snapshot-serializere.

  • Lagt til: Store diff-er blir nå skjult som standard i snapshots og påstander. La til --expand (eller -e) for å vise full diff.

  • Lagt til: jest.resetAllMocks som erstatter jest.clearAllMocks.

  • Lagt til: --json inkluderer nå informasjon om enkelttester i filer.

  • Fikset: Ubehandlede promise-avvisninger i test.concurrent.

  • Fikset: babel-plugin-jest-hoist ved bruk av jest.mock med tre argumenter.

  • Fikset: Den globale JSON i jest-environment-node hentes nå fra vm-konteksten istedenfor foreldrekonteksten.

  • Fikset: Jest skriver ikke lenger stack traces fra babel.

  • Fikset: Falske timere nullstilles når FakeTimers.useTimers() kalles.

  • Fikset: Regulære uttrykk håndteres korrekt i snapshots.

  • Fikset: Forbedret pen utskrift av store objekter.

  • Fikset: NaN% Failed i OS-varsling ved bruk av --notify.

  • Fikset: Første testkjøring uten bufrede tidsmålinger bruker nå separate prosesser istedenfor å kjøre i band.

  • Fikset: Sammenligninger av Map/Set.

  • Fikset: test.concurrent fungerer nå med --testNamePattern.

  • Fikset: Forbedret .toContain-matcher.

  • Fikset: Moduler med plattformspesifikke filendelser løses nå korrekt i react-native.

  • Fikset: Globale innebygde objekter i jest-environment-node fungerer nå korrekt.

  • Fikset: Mock-objekter opprettes nå i vm-konteksten istedenfor foreldrekonteksten.

  • Fikset: .babelrc inkluderes nå i transformasjonsbuffer-nøkkelen i babel-jest.

  • Fikset: Dokblokk-parsing med haste-moduler.

  • Fikset: Avslutter med riktig kode når dekningsgradsterskelen ikke nås.

  • Fikset: Jest tømmer nå hele skrollebufferet i overvåkingsmodus.

  • Foreldet: jest-react-native er nå foreldet og videresender til react-native.

Planer for Jest i første halvår 2017

For seks måneder siden deltok vi planene våre for Jest og vi er glade for at vi klarte å gjennomføre nesten alle. Her er planene våre for neste seks måneder:

  • Øyeblikkelig tilbakemelding: Nuclide-integrasjon og forbedret raskere overvåkingsmodus.

  • Forbedret utvikleropplevelse: nye mocke-APIer og forbedrede påstander.

  • Bedre ytelse og minnebruk: analyser Jest og vær mer bevisst på effektivitet.

  • Snapshot-forbedringer: godkjenningsmodus for snapshots, syntaksutheving og forbedrede react-test-renderer-APIer.

  • Nettsted: Vi skal oppdatere nettstedet og dokumentasjonen, samt legge til et Jest-sjefark.

Vi kommer ikke til å oppgi tidsplaner eller estimater for disse funksjonene, og vi kan faktisk ikke nå alle disse målene. Hvis du vil bidra til å realisere disse tingene, send oss problemer og pull-forespørsler med dine ideer – la oss sammen gjøre Jest bedre i 2017.