Een kleine introductie tot het testen van JS-eenheden en het framework en de tools
Het coderingsscenario voor webontwikkeling is de afgelopen jaren exponentieel veranderd. De wereld is overgestapt van conventionele programmeertalen zoals Java, .NET en PHP. Ze zijn begonnen zich aan te passen aan het JavaScript-framework vanwege het gebruiksgemak in frontend, backend en snelle prototyping-mogelijkheden.
Met deze overgang komt ook de behoefte aan uitstekende testtools. In dit artikel zal ik u door enkele van de beste JavaScript-unit-testtools leiden die in de branche worden gebruikt.
Contents
Belang van unit testing
Voordat we de beschikbare tools en hun voordelen gaan begrijpen, moeten we eerst begrijpen waarom unit testing belangrijk is.
Unit testing is het proces van het testen van de geïmplementeerde code op moduleniveau. Met unit testen kunt u ervoor zorgen dat uw ontwikkelde modules voldoen aan de vereisten die zijn gespecificeerd in het bedrijfsdocument. Deze tests worden voor elke module geschreven terwijl ze worden gemaakt. Na elke nieuwe module-ontwikkeling wordt de hele reeks testcases uitgevoerd om ervoor te zorgen dat de ontwikkelde module geen bestaande modules beïnvloedt.
Javascript-ontwikkeling kan behoorlijk ongeorganiseerd worden als de juiste conventies niet worden gevolgd. Dit maakt het noodzakelijk om de juiste ontwikkeling te gebruiken & unit testen tools. Javascript unit tests voor frontend draaien voornamelijk op echte of headless browsers
Deze tests zijn gericht op het testen van de bruikbaarheid en het reactievermogen van de applicatie. De frameworks voor het testen van backend-eenheden zijn gericht op het testen van bedrijfslogica en service-eindpunten voor op NodeJS gebaseerde backend-code.
MokkaJS
MokkaJS is het meest populaire testraamwerk dat backend- en frontend-testen ondersteunt. MochaJS is een flexibele basis voor het ontwikkelen van tests als je dat nodig hebt. Het voert de tests asynchroon uit op de Chrome v8-engine of een andere browser.
De belangrijkste voordelen van Mocha zijn onder meer:
- Werkt voor zowel frontend als backend
- Ondersteuning van NodeJS-foutopsporing
- Biedt een schone basis om tests te ontwikkelen volgens het gemak van de ontwikkelaar
- Ondersteunt elke browser, inclusief Chrome-bibliotheek zonder hoofd
- Ondersteunt objectspot om flexibele backend-tests uit te voeren
Jasmijn
Jasmijn is een mimicker voor gebruikersgedrag waarmee u testcases kunt uitvoeren die vergelijkbaar zijn met gebruikersgedrag op uw website. Jasmine is handig voor het testen van een frontend voor zichtbaarheid, klikhelderheid en het reactievermogen van de gebruikersinterface in verschillende resoluties. Jasmine maakt het mogelijk om gebruikersgedrag te automatiseren met vertragingen bij de douane en wachttijd om daadwerkelijk gebruikersgedrag te simuleren.
De belangrijkste voordelen van Jasmine zijn:
- Lagere overhead door bijna geen externe afhankelijkheden
- Wordt geleverd met bijna alle benodigde gereedschappen uit de doos
- Ondersteunt zowel frontend- als backend-tests
- De codering is vergelijkbaar met schrijven in natuurlijke taal
- Uitgebreide documentatie om het te gebruiken met verschillende frameworks
Bekijk dit briljant unit testen met de online cursus van Jasmine.
AVA
AVA is een minimalistisch lichtgewicht testraamwerk dat gebruik maakt van de asynchrone aard van Javascript. AVA kan gelijktijdig tests uitvoeren.
Het geeft je bijna volledige controle over wat je doet. Het is voornamelijk gericht op het uitvoeren van tests voor op NodeJS gebaseerde code. Enkele voordelen zijn:
- Een lichte voetafdruk maakt het sneller
- Voert tests asynchroon en gelijktijdig uit
- Sneller dan de meeste andere testframeworks
- De eenvoudigere syntaxis voor Javascript-tests
- Schonere stacktraces voor eventuele gedetecteerde fouten
GRAP
GRAP is een van de meest populaire frameworks die regelmatig door Facebook wordt onderhouden. Het is een geprefereerd raamwerk voor de op React gebaseerde applicaties omdat het geen configuratie vereist.
Het is echter niet beperkt tot gebruik met React. Enkele van de JEST-functies zijn:
- Single framework geschikt voor NodeJS, VueJS, React, Angular en andere op Babel gebaseerde projecten
- Gemakkelijker van de grond te komen
- Goed documentatie en standaard syntaxis van codering
- Met Live snapshots is het mogelijk om tests met grotere objecten te beheren
Karma
Karma is een productieve testomgeving die alle populaire testbeschrijvingen binnen zichzelf ondersteunt. Het biedt uw applicatie de ondersteuning om tests uit te voeren in verschillende omgevingen. Het heeft brede ondersteuning voor het uitvoeren van tests op verschillende apparaten en applicaties.
De belangrijkste factor om voor Karma te kiezen, ligt in de ondersteuning voor integratie met CI / CD-engines en de volgende functies.
- Kan worden gebruikt om tests uit te voeren op browsers, headless-omgevingen zoals PhantomJS en op apparaten
- Ondersteunt tests die in de meeste populaire frameworks zijn geschreven
- Maakt het mogelijk om op afstand tests uit te voeren op andere apparaten door alleen bestanden te ontvangen
- Ondersteunt foutopsporing in testgevallen met zowel Chrome als Webstorm
Plakband
Plakband is vrij gelijkaardig aan AVA in zijn architectuur. Het ondersteunt geen globals en daarom moet u Tape in elk testbestand opnemen. Deze beslissing om globbing van variabelen te beperken heeft ook zijn voordelen. Enkele van de kenmerken benadrukken:
- Schone lichtgewicht voetafdruk
- Biedt alleen bare-metal-code en geeft de ontwikkelaar volledige vrijheid om testcases te schrijven
- Ondersteunt ES6, Typescript en coffee script-standaarden
- Ondersteunt testuitvoering in de meeste moderne browsers
Cypress.io
Cipres is een spannend testraamwerk dat praktisch in de browser draait. Het biedt een interactieve gebruikersinterface in de browser in de vorm van een webpagina. Het kan eenvoudig worden geïnstalleerd op Mac, Windows en Linux. Het is een onafhankelijke testrunner die niet nauw met uw code hoeft te integreren.
Poppenspeler
Poppenspeler is een uitstekend framework voor testuitvoering, gebouwd door een team van Google. Het biedt een headless chrome API voor NodeJS-applicaties.
Puppeteer wordt voornamelijk gebruikt voor applicaties die specifiek zijn voor de browser, zoals crawltest, paginastructuurtest, screenshots maken en zelfs vooraf gegenereerde inhoud vastleggen voor applicaties met één pagina. Bijkomende voordelen van het gebruik van poppenspeler zijn:
- Mogelijkheid om aangepaste resoluties en formaten in te stellen voor de browser
- Ondersteuning om Chrome-extensies te testen
- Automatiseringsondersteuning voor het indienen van formulieren, UI-testen en toetsenbordinvoer
- Ondersteunt ES6-functionaliteiten zoals wachten en asynchroon
ChaiJS
ChaiJS raamwerk richt zich op gedragsgestuurd testen. Het kan parallel met elk ander raamwerk worden gebruikt. Het bestaat al een tijdje en is geëvolueerd met de evolutie in Javascript-standaarden.
ChaiJS werkt met Node, browser, rail en heeft een geweldige ondersteuningsgemeenschap en documentatie.
Qunit
Qunit – een krachtig testraamwerk voor gebruik met een frontend. Het is de eerste keuze van ontwikkelaars van de JQuery, JQuery Mobile en JQuery UI-bibliotheken.
Het kan worden geschreven als een onafhankelijk JS-bestand en op elke webpagina worden uitgevoerd. De standaardmethode voor het testen met Qunit is om het bestand op de webpagina op te nemen en tests uit te voeren met de Qunit-plug-in. De voordelen van QUnit zijn onder meer:
- Kan worden gebruikt om herbruikbare testscripts te bouwen
- Biedt een kant-en-klare webinterface voor het visueel bekijken van testcase-uitgangen
- Een pool van plug-ins die erop zijn gebouwd, maakt een snellere ontwikkeling van testcases mogelijk
Sinon
Sinon.js complimenteert het kader voor het testen van eenheden om de echte dingen te vervalsen / bespotten. Omdat u tijdens het testen niet over alle gegevens beschikt! Het ondersteunt Chrome, IE 11, Firefox, Edge, Safari en Node.js-runtimes.
Een goed alternatief voor Sinon zou zijn testdouble.js
Conclusie
Eenheidstesten zijn essentieel om ervoor te zorgen dat codewijzigingen de applicatie niet onderbreken en het werkt volgens de zakelijke vereisten. En ik hoop dat bovenstaande je daarbij helpt. Als je een beginner bent, dan vind je dit misschien leuk online cursus die je leert JS-unit testen met ChaiJS, Sinon en Mocha.