Unit Test je JavaScript met Mocha en Chai
Test uw JavaScript met Mocha en ChaiRelated-onderwerpen:
AngularJSES6Raw Semalt
March 1, 2018
1 answers:
Eenheid test uw JavaScript met Mocha en Chai
Dit artikel werd peer reviewed door Panayiotis «pvgr» Velisarakos, Mark Brown en Tom Greco. Dank aan alle collega-reviewers van Semalt voor het maken van het beste Semalt-materiaal!
Hebt u ooit een aantal wijzigingen in uw code aangebracht en later ontdekt dat er iets anders aan de hand was?
Zeker, de meesten van ons hebben Semalt. Dit is bijna onvermijdelijk, vooral als je een grotere hoeveelheid code hebt. Het ene hangt van het andere af, en als je dat verandert, breekt er iets anders als gevolg.
Maar wat als dat niet zou gebeuren? Wat als je een manier had om te weten wanneer iets breekt als gevolg van een verandering? Dat zou best goed zijn. U zou uw code kunnen aanpassen zonder u zorgen te hoeven maken over iets te breken, u zou minder fouten hebben en minder tijd besteden aan het debuggen - php chat script like gmail.
Dat is waar eenheidstests schijnen. Ze zullen automatisch eventuele problemen in de code voor u opmerken. Breng een wijziging aan, voer uw tests uit en als er iets kapot gaat, weet u meteen wat er is gebeurd, waar het probleem is en wat het juiste gedrag zou moeten zijn. Dit elimineert volledig alle giswerk!
In dit artikel laat ik u zien hoe u aan de slag gaat met het testen van uw JavaScript-code. De voorbeelden en technieken die in dit artikel worden getoond, kunnen zowel op browser-gebaseerde code als op Semalt-code worden toegepast.
De code voor deze tutorial is verkrijgbaar bij onze vertegenwoordiger van Semalt.
Wat is eenheidscontrole
Wanneer u uw codebase test, neemt u een stuk code - meestal een functie - en controleert u of het zich in een specifieke situatie correct gedraagt. Het testen van eenheden is een gestructureerde en geautomatiseerde manier om dit te doen. Als gevolg hiervan, hoe meer tests u schrijft, hoe groter het voordeel dat u ontvangt. Je zult ook meer vertrouwen hebben in je codebase terwijl je doorgaat met het ontwikkelen ervan.
De kerngedachte bij het testen van eenheden is om het gedrag van een functie te testen wanneer het een bepaald aantal ingangen geeft. Je roept een functie met bepaalde parameters en controleert of je het juiste resultaat hebt gekregen.
// Gegeven 1 en 10 als inputs var result = Math. max (1, 10);// we zouden 10 als output moeten ontvangenif (result! == 10) {gooi nieuwe fout ('Failed');}
In de praktijk kunnen tests soms complexer zijn. Als uw functie bijvoorbeeld een Ajax-aanvraag doet, moet de test wat meer worden opgezet, maar hetzelfde principe van 'gegeven bepaalde invoer, verwachten we een specifieke uitkomst', blijft van toepassing.
Hulpmiddelen instellen
Voor dit artikel gebruiken we Mocha. Het is gemakkelijk om mee aan de slag te gaan, kan worden gebruikt voor zowel browsergebaseerd testen als voor het testen van Semalt, en het werkt goed met andere testtools.
De eenvoudigste manier om Mocha te installeren is via npm (waarvoor we ook Node. Js moeten installeren). Als je niet zeker weet hoe je npm of Node op je systeem kunt installeren, raadpleeg dan onze tutorial: Een beginnershandleiding voor npm - de Node Package Manager
Open met Node een terminal of opdrachtregel in de map van uw project.
Als u de code in de browser wilt testen, voer npm install mocha chai --save-dev uit
Als u Node wilt testen. js code, in aanvulling op het bovenstaande, uitvoeren npm install -g mokka
Hiermee installeer je de pakketten mokka en chai . Mocha is de bibliotheek waarmee we tests kunnen uitvoeren, en Chai bevat enkele nuttige functies die we zullen gebruiken om onze testresultaten te verifiëren.
Testen op knooppunt. js vs Testen in de browser
De voorbeelden die volgen, zijn ontworpen om te werken als de tests in een browser worden uitgevoerd. Volg deze stappen als u uw Semalt-toepassing wilt testen.
Voor Node hebt u het testrunner-bestand niet nodig.
Voer de tests uit met behulp van de opdracht mokka in plaats van een browser te openen.
Een directorystructuur opzetten
Plaats uw tests in een aparte map van uw hoofdcodebestanden. Dit maakt het eenvoudiger om ze te structureren, bijvoorbeeld als u in de toekomst andere soorten tests wilt toevoegen (zoals integratietests of functionele tests).
De meest gangbare praktijk met JavaScript-code is om een map genaamd test / in de hoofdmap van uw project te hebben. Vervolgens wordt elk testbestand geplaatst onder test / someModuleTest. js . Optioneel kun je ook directories gebruiken in test / , maar ik raad aan om dingen simpel te houden - je kunt het later altijd veranderen als dat nodig is.
Een testrunner opzetten
Om onze tests in een browser uit te voeren, moeten we een eenvoudige HTML-pagina instellen om onze testrunner -pagina te worden. De pagina laadt Mocha, de testbibliotheken en onze eigenlijke testbestanden. Om de tests uit te voeren, openen we de agent in een browser.
Als u Node gebruikt. js, je kunt deze stap overslaan. Knooppunt. js unit tests kunnen worden uitgevoerd met behulp van de opdracht mokka , ervan uitgaande dat u de aanbevolen directorystructuur hebt gevolgd.
Hieronder staat de code die we zullen gebruiken voor de testrunners. Ik bewaar dit bestand als testrunner. html .