JavaScript-verdenen byder på masser af muligheder for … ja, stort set alt. I dag fokuserer vi på testværktøjer og besvarer spørgsmålet “Hvad er det bedste JavaScript-framework?”

Vi gennemgår fem af de mest populære JavaScript-testframeworks, og i slutningen af artiklen vælger vi det, som vi mener er det bedste. Lad os begynde.

Hvad er testframeworks?

Hvor vi dykker ned i vores liste over frameworks, er det vigtigt at forstå, hvad et testframework er.

Simpelt sagt er et testframework et værktøj – eller et sæt værktøjer – der hjælper dig med at udføre enhedstest. Et testframework bør som minimum give dig

  • Regler eller konventioner til at skrive testtilfælde og organisere dem i testsuiter.
  • Midler til automatisk at udføre og selvklassificere testene.
  • Resultater af testene, der vises og formateres.

Fem JavaScript-testrameworks, der er værd at tjekke ud

Nu burde du have en fast forståelse for, hvad testrameworks er, og hvorfor vi har brug for dem. Når det er sagt, er det tid til at tage fat på vores liste over værktøjer og starte med Mocha.

Mocha

Mocha, der nogle gange også kaldes MochaJS, er en testramme, der kører både i Node.js og i browseren. Det blev udgivet tilbage i 2011 og har siden da været et af de mest populære testframeworks for JavaScript-verdenen. Ifølge State of JavaScript-rapporten har Mocha’s popularitet dog været faldende i de sidste par år, selv om det nok stadig er det mest brugte og mest kendte af værktøjerne.

Denne ramme gør asynkron testning enkel ved at køre test serielt. Det giver mulighed for præcis rapportering og samtidig kortlægning af uopfangede undtagelser til de korrekte testcases. Mocha-rammen har en ekstremt fleksibel konfiguration. Det giver dig mulighed for at parre det med de biblioteker, du især har brug for til funktionaliteter som assertions, mocking osv.

Ulemperne ved en sådan fleksibilitet er, at Mocha kræver mere arbejde i forbindelse med den indledende opsætning. Desuden, mens andre frameworks allerede kommer med assertions- og mocking-funktionaliteter, kræver Mocha yderligere værktøjer til det.

Official site: mochajs.org
Repository: github.com/mochajs/mocha

Puppeteer

Puppeteer er et Node.js-bibliotek, der giver brugerne mulighed for at styre en headless Chrome- eller Chromium-browser. På den måde er det muligt at automatisere tests, som man typisk ville udføre manuelt ved hjælp af en almindelig browser. På projektets side er der en liste over nogle eksempler på tests, du kan udføre:

  • Generer skærmbilleder og PDF’er af sider.
  • Gennemse en SPA (single-page application) og generere præ-renderet indhold (dvs. “SSR” ).
  • Automatiser formularindsendelse, UI-test, tastaturindtastning osv.
  • Skab et ajourført, automatiseret testmiljø. Kør dine tests direkte i den nyeste version af Chrome ved hjælp af de nyeste JavaScript- og browserfunktioner.
  • Fang en tidssporing af dit websted for at hjælpe med at diagnosticere ydelsesproblemer.
  • Test Chrome-udvidelser.
  • Testim har udgivet en gratis optager til Puppeteer. Tjek den ud, og brug den så ofte du vil.

Officiel side: developers.google.com/web/tools/puppeteer
Repository: github.com/puppeteer/puppeteer

Jasmine

Jasmine er en JavaScript BDD-testramme (behavior-driven development).

Denne ramme leveres allerede med stort set alt, hvad du behøver for at komme i gang med at teste. Den har indbyggede assertions og testdobler med spies, i modsætning til f.eks. Mocha, som kræver, at du installerer tredjepartsværktøjer for at få disse funktionaliteter.

Jasmine er dog også fleksibel og kan integreres problemfrit med et stort antal yderligere testværktøjer. Du kan nemt bruge Karma som test runner eller anvende Sinon.JS til dine mocking-behov.

Official site: jasmine.github.io/
Repository: github.com/jasmine/jasmine

QUnit

QUnit var oprindeligt en del af jQuery-programmeringsbiblioteket. John Resig skabte det til at teste jQuery, jQuery UI og jQuery Mobile. I 2008 blev QUnit uddraget fra jQuery-kodebasen og frigivet som en selvstændig ramme, men den ville stadig kræve jQuery for at fungere. I 2009 løste de det med en omskrivning, så QUnit endelig blev uafhængig af jQuery.

Trods det oprindelige målrettet jQuery er QUnit i dag et generisk framework, der kan teste enhver JavaScript-kode og understøtter både klient- og serverside-miljøer.

Man kan se QUnit som værende JavaScript-repræsentanten i xUnit-familien af unit testing frameworks. Det har en hurtig og nem opsætning. Da det desuden har eksisteret i mindst 12 år, er det et velunderstøttet værktøj.

Official site: qunitjs.com
Repository: github.com/qunitjs/qunit

Jest

Jest er en testramme til JavaScript, der fokuserer på enkelhed. Jest er udgivet af Facebook og har til formål at fungere out of the box og uden behov for konfiguration.

Hvis du tager et kig på Jests “kom i gang”-side, vil du se, at du kan installere det, skrive din første test og køre den i løbet af få minutter uden komplicerede opsætninger eller yderligere installationer. En anden fordel ved Jest er dens imponerende ydeevne.

Jest bruges primært til at teste React-applikationer, men det betyder ikke, at du er begrænset til kun at bruge den til at teste apps, der er skrevet med rammen. Tværtimod: Du kan også bruge det til at teste Node-, Angular- og Vue-applikationer, for blot at nævne nogle få.

Official site: jestjs.io/
Repository: github.com/facebook/jest

Notable Absences

Du undrer dig måske over, hvorfor nogle berømte JavaScript-testværktøjer ikke er kommet med på vores liste. Måske mener du, at værktøjer som Karma, Sinon og Chai, blandt andre, er populære nok til at være med på listen. Hvorfor har vi ikke taget dem med?

Simpelt sagt ønskede vi at holde listen så kortfattet som muligt. For at gøre det har vi besluttet ikke at medtage testværktøjer på listen, som strengt taget ikke er frameworks. Så det er grunden til, at et superpopulært værktøj som Karma ikke kom med: Det er en test runner, ikke et framework. Samme ræsonnement gælder for Sinon (et mocking-værktøj) og Chai (et assertion-bibliotek).

Du kan argumentere for, at Puppeteer ikke helt passer ind på listen, og det er jeg til en vis grad enig i. Det vil sige, at alle de andre værktøjer er frameworks, der er mere velegnede til at udføre test i enhedstest-stil, mens Puppeteer mere er et browser-automatiseringsværktøj. Det er dog stadig et testframework i den forstand, at det giver dig mulighed for at designe automatiserede tests, som senere køres uden menneskelig indgriben.

Verdict: Hvad er det bedste JavaScript-testramework?

Vi har præsenteret fem testrameworks til JavaScript. Det er nu tid til at indfri indlægstitlens løfte og vælge det bedste. For at gøre det vil vi bedømme rammerne ud fra fire kriterier: omkostninger, installation, nem opsætning og indlæringskurve.

Evaluering af rammerne

Kost

Det første kriterium er helt sikkert det letteste for os at vurdere. Alle de frameworks, vi har dækket her, er open source-projekter, så du kan downloade og bruge dem gratis (som i øl). Så vi har ingen klar vinder her. Lad os gå videre.

Installation

Installation af alle ovenstående værktøjer er ret nemt. Du kan trods alt installere dem alle ved hjælp af npm (eller alternativt Yarn.) Nogle af værktøjerne tilbyder dog yderligere installationsmuligheder.

For eksempel kan du ud over npm og Yarn installere QUnit som en standalone-download. Men det ville kræve, at du skal gemme og administrere dette aktiv. I stedet kan du bruge den version, der er hostet på jQuery CDN’en. Jasmine tilbyder også en standalone-version, der ikke er afhængig af Node, og som giver dig mulighed for at køre specs ved hjælp af din browser.

Så, har vi en vinder her? Vi tror det. Hvis vi skulle vælge udelukkende på baggrund af nem installation, ville vi have en anden lodtrækning. Men som vi har set, tilbyder QUnit og Jasmine begge flere muligheder, da du kan bruge dem som standalone-biblioteker. Er denne ekstra fleksibilitet nyttig? Det kan være forskelligt, men for os er QUnit og Jasmine vinderne her.

Vinderne: QUnit og Jasmine

Installationsvenlighed

Nu skal vi se på, hvor let det er at installere. Når det kommer til den indledende opsætning, har vi en klar vinder her: Jest. Frameworket lover nul-konfigurationsbrug, og det løfte holder det. Selvfølgelig giver det dig mulighed for at lave valgfrie konfigurationer, men det føles fantastisk at installere et testrammeværk og få en rigtig test til at køre på omkring to minutter uden nogen konfiguration eller installation af yderligere værktøjer.

Vinder: Jest

Læringskurve

Endeligt, læringskurven. Vi bliver nødt til at vælge Jest igen her. Da det kommer med et bredt API og ikke kræver så mange tredjepartsværktøjer som de andre frameworks, præsenterer Jest uundgåeligt en mindre stejl indlæringskurve.

Vinder:

Her er vinderen

Efter at have gennemgået fem JavaScript-testframeworks og derefter analyseret dem ud fra fire kriterier, er det tid til at vælge en vinder.

Så, da det var vinderen i to af de fire kriterier, vi brugte, vælger vi Jest som vores vinder. Det betyder ikke, at du ikke skal prøve de andre værktøjer. Tværtimod: eksperimentér og øv dig så meget som muligt, da det er den bedste måde at lære på.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.