En hurtig oversigt over de mest in-efterspurgte javascript-testframeworks, der vil indtage en central plads i javascript-økosystemet, og som udviklere bør stifte bekendtskab med i 2019

Foto af Louis Reed på Unsplash

TL;DR: i denne artikel vil vi se på de mest efterspurgte javascript-testframeworks og gennemgå dem baseret på indsigt fra state of javascript-resultater.

Generelt set er der grundlæggende tre typer eller måder, hvorpå en javascript-applikation kan testes. Den første måde er ved at teste de enkelte funktioner separat eller uafhængigt gennem en slags blackbox-metode, hvor input leveres med et allerede kendt output for at sikre, at der produceres forventede resultater, dette kaldes Unit Testing. Den proces, hvor man derefter tester hele komponenten eller applikationen for at se, om de forventede resultater bliver outputet, kaldes integrationstest. Den tredje måde er kendt som User Interface Testing, den bruges til grundlæggende at teste din applikation ved at kontrollere browseren uden meget vægt på det interne arbejde for at teste forventninger.

Hvad er StateOfJS

State of JS er grundlæggende en årlig undersøgelse af alt JavaScript, hvor meninger fra udviklere, der deltager i undersøgelsen, registreres og visualiseres smukt for at vise indsigter, der signalerer tilstanden af JavaScript i det pågældende år.

Datapunkterne dækker frontend-webudviklingsrammer, databaser, tilstandsstyring, relationer mellem frameworks, modtagelse og brugervenlighed, sprog, der kompileres til JavaScript, mobile frameworks, build-værktøjer, JavaScript-testværktøjer og en hel masse andet. Det er en meget omfattende JavaScript-undersøgelse, der blev startet i 2016 af Sacha Greif og et par andre hjælpere, og nu har den over 20.000 udviklers svar i den seneste udgave.

Hvorfor StateOfJS?

Ja, State of JS er faktisk den allerførste udviklerundersøgelse udelukkende for JavaScript, der er universelt respekteret, hvad angår JavaScript-fællesskabet. Der findes andre meget populære undersøgelser som stackoverflow-udviklerundersøgelsen med over 100.000 respondenter og endda Jetbrains State of Developer Ecosystem Report med over 6.000 respondenter, men vi vil dog fokusere på State of JS-undersøgelsen i dag.

Lad os tage et hurtigt overblik over disse testframeworks i den rækkefølge, de blev visualiseret i state of javascript 2018-undersøgelsen.

Tip: Når du arbejder med komponenter (React, ES6 osv.), skal du bruge Bit til nemt at dele, organisere og genbruge dem mellem apps – for at bygge hurtigere. Du kan også bruge det til at teste komponenter individuelt i skyen, før du bruger dem. Giv det et forsøg.

Jest

Jest, vel nok en af de mest populære javascript-testrammer med over 22.000 ⭐️ på github, blev bygget og vedligeholdes konstant af teamet hos Facebook. Det er en nul-konfigurations javascript-testramme, der anbefales af React, og den er også den mest nemme at bruge. Jest har en meget imponerende acceptrate i 2018 af javascript-fællesskabet.

Det er meget performant med en entydig og bekvem brugergrænseflade. Den leveres med spies og mocks og opretter test globals som standard. Den giver også mulighed for snapshot-testning og leveres med et indbygget kodedækningsværktøj. Den er utrolig hurtig og en af de bedste muligheder for begyndere, der gerne vil gå i gang med at teste deres javascript-kode. Der er også et væld af ressourcer tilgængelige online om Jest.

Mocha

Mocha med over 16.000 ⭐️på github er den mest anvendte javascript-testramme i årevis nu. Det bruges sammen med assertions, mocking- og spionageværktøjer fra tredjepart som chai eller enzyme. Udover det massive økosystem har Mocha veletablerede muligheder med en god dokumentation. Det er meget fleksibelt og åbent for en masse udvidelser.

Selv om vi ser en lille drift af dominans fra Mocha til Jest, men Mocha er stadig det mest anvendte testværktøj og det mest afhængige bibliotek, og javascript-udviklere giver ikke slip endnu, primært på grund af den rigdom af frihed og fleksibilitet, der følger med brugen af Mocha. Mocha-fællesskabet er meget massivt, og der er tonsvis af ressourcer derude om brug og use cases.

Jasmine

Jasmine er universelt kendt som den testramme, der officielt anbefales af Angular til udviklere at bruge, Jest-rammen blev bygget på basis af Jasmine. Med over 14.000 ⭐️på github er Jasmine et af de mest populære frameworks til test af javascript, det er også et af de ældste også med de fleste ressourcer og community support. Angular-udviklere vil finde det nemt at bruge og integrere, da den officielle dokumentation for Angular også foreslår at bruge Jasmine. Det er meget nemt at komme i gang, det er nok en af de ting, der har inspireret Jest. I 2018 ser vi ifølge undersøgelsen et skift i brugen af Jasmine til Jest og også flere react-applikationer bliver testet af Jasmine i forhold til Angular.

Det er meget vigtigt at bemærke, at tests til Angular-applikationer sagtens kan køres med Jest, og det handler stort set kun om præference.

Karma

Karma med over 10.000 ⭐️på github er en slags general use case javascript testing framework. Du kan køre test i din browser eller i browserlignende miljøer som jsdom. Der er understøttelse for værktøjer til kontinuerlig integration som travis og jenkins, test kan køres på rigtige enheder eller på en headless phantomJs instans. Det er framework agnostisk, så du kan beskrive dine tests med Jasmine, Mocha eller skrive en simpel adapter til et hvilket som helst framework, du kan lide.

Tests kan også køres eksternt fra din terminal eller IDE eller ved hjælp af tjenester som BrowserStack.

AVA

AVA med over 15.000 ⭐️på github er i øjeblikket den mest minimalistiske javascript-testramme derude, der kører tests parallelt. AVA er en testkører til Node.js med en kortfattet API, detaljeret fejloutput, omfavnelse af nye sprogfunktioner og procesisolering, der lader dig skrive tests mere effektivt.

Den leveres med understøttelse af snapshot-test og typescript og kører tests i watch mode, hvilket gør den virkelig hurtig; den giver også et isoleret miljø for hver testfil. Det er nemt at komme i gang og har en samling af ressourcer, der er tilgængelige online.

Cypress

Med over 9.000 ⭐️på github er Cypress et meget hurtigt og pålideligt javascript-testværktøj. Det injicerer grundlæggende tests i en webapplikation, det giver en meget klar og omfattende dokumentation og er i konstant konkurrence med et andet testframework TestCafe.

Det leveres også med understøttelse af Mocha og har en rigtig god måde at logge testresultater på i et dashboard og nem debugging. Det er den testramme, man skal holde øje med i 2019 med en massivt stigende acceptrate.

Puppeteer

Med over 43.000 ⭐️på github er Puppeteer, der er bygget af holdet hos Google, et Node-bibliotek, som giver et API på højt niveau til at styre Chrome eller Chromium over DevTools-protokollen. Puppeteer kører headless som standard, men kan konfigureres til at køre fuld (ikke-headless) Chrome eller Chromium.

Det er nyt på testscenen, men har allerede en masse udviklere, der bruger det (tak Google!) Det er også temmelig hurtigt, da det er native, det understøtter i øjeblikket ikke en masse udvidelser, men fremtiden er virkelig lys og lovende.

QUnit

Med over 3.700 ⭐️på github er QUnit en JavaScript-enhedstestramme, som oprindeligt blev udviklet til test af jQuery, jQuery UI og jQuery Mobile, det er en generisk ramme til test af enhver JavaScript-kode. Det understøtter klientside-miljøer i webbrowsere og serverside.

QUnit ligner andre rammer for enhedstest som JUnit, men gør brug af de funktioner, som JavaScript giver, og hjælper med at teste kode i browseren, f.eks. indbygget understøttelse af asynkronitet og håndtering af undtagelser.

Chai

Med 6.000 ⭐️på github er Chai et assertion-bibliotek til adfærdsdrevet udvikling og testdrevet udvikling i lighed med Node’s indbyggede assert. Det gør testning meget nemmere ved at give dig masser af assertions, som du kan køre mod din kode. Det leveres med understøttelse af enhver anden testramme som Mocha.

TestCafe

TestCafe med over 5.900 ⭐️på github, er en node-ramme, der bruges til end to end test af javascript-applikationer. Det leveres med typescript-understøttelse og har en rigtig fin grænseflade til logning af testresultater.

Det kører på alle de populære miljøer, herunder Windows, MacOS og Linux. Den understøtter desktop-, mobil-, fjern- og cloud-browsere (UI eller headless). Den har også meget udførlig dokumentation og et voksende fællesskab.

Honorable Mentions

Protractor

Conclusion

admin

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

lg