Er zijn voldoende testtools en frameworks voor unit-, integratie- en functionele tests voorhanden in het JavaScript-ecosysteem, met toepassingen voor Node.js, browsers en frameworks als Angular en React. Hier volgen tien uitstekende voorbeelden van de opties die JavaScript-ontwikkelaars hebben om hun apps te testen.
1. AVA
AVA is een testrunner voor Node.js die een bondige API, gedetailleerde foutmeldingen, ondersteuning voor nieuwe taalfeatures en isolatie van processen levert. AVA is het meest geschikt voor het testen van Node.js-modules en serverapplicaties, maar minder voor het testen van UI-applicaties. Onder de features vind je onder meer een optie om een test te markeren als 'to do' taak. Elke run van een bestand is een apart proces. Andere voordelen zijn AVA's minimalisme en snelheid, simpele testsyntaxis en de mogelijkheid om tests parallel te draaien. De tool ondersteunt verder asynchrone functies en observables - dat laatste is een type dat is te gebruiken om push-gebaseerde databronnen te modelleren, bijvoorbeeld DOM-events.
Installatie: De instructies voor het installeren van AVA kun je vinden op de GitHub-pagina van het project.
2. Cucumber.js
Dit is de JavaScript-implementatie van testtool Cucumber. Cucumber.js draait op ondersteunde versies van Node.js en moderne webbrowsers. Het Cucumber-project vermeldt diverse voordelen, zoals teamcommunicatie en de mogelijkheid om geautomatiseerde tests te schrijven in 'klare taal', zodat iedereen van het team ze kan lezen. Daarmee kan communicatie, samenwerking en wederzijds vertrouwen worden verbeterd. Cucumber.js bevat een executable om je testsuites (hier 'features' genoemd) te draaien.
Installatie: De instructies voor het installeren van Cucumber.js staan op GitHub.
3. Enzyme
Enzyme is een testutility voor de React JavaScript UI-library. Het is bedoeld om het gemakkelijker te maken om de output van React-componenten te testen. De Enzyme-API bootst de jQuery-API na voor DOM-manipulatie en traversal. De tool is non-opinionated over de testrunner of assertie-library. Als ontwikkelaars wel eigen assertions en functies willen gebruiken om React-componenten te testen, kunnen ze kijken naar chai-enzyme
met Mocha/Chai, jasmine-enzyme
met Jasmine of jest-enzyme
met Jest. Je kunt met Enzyme ook React Native-componenten testen.
Installatie: Een handleiding over hoe je Enzyme kunt installeren staat op GitHub.
4. Karma
Karma is een testrunner voor JavaScript om code in meerdere browsers uit te voeren. Alle grote browsers, inclusief mobiele varianten, zijn ondersteund. De makers achter dit project zeggen dat Karma een omgeving biedt waarin ontwikkelaars niet een heleboel configuraties zelf hoeven op te zetten, maar ze kunnen code schrijven en meteen feedback krijgen van tests. Karma is ontworpen voor low-level testdoeleinden (met andere woorden, unit-tests). Het is geen framework of assertie-library, maar start een HTTP-server en genereert een testrunner vanuit het testframework van de ontwikkelaar. Er zijn plug-ins voor frameworks als Jasmine, Mocha en QUnit (die we hier ook behandelen).
Installatie: Instructies voor het installeren van Karma zijn beschikbaar op GitHub.
5. Jasmine
Jasmine is een framework dat wordt aangeprezen als 'behavior driven'. Er is geen afhankelijkheid van andere JavaScript-frameworks en Jasmine heeft geen DOM nodig. Voorstanders prijzen de syntaxis waarmee het makkelijk is om tests te schrijven. Pivatol Labs onderhoudt het project en Jasmine is geschikt voor het testen van websites, Node.js-projecten en al het andere dat JavaScript draait. Jasmine is bedoeld om het gemak van testen te leveren voor diverse use-cases en browsers. Het is framework-agnostisch, waardoor developers code kunnen testen van React, Angular of welke JavaScript-library dan ook. De tool streeft naar zo min mogelijk dependency's en om zo klein mogelijk te blijven.
Installatie: Instructies over installatie en hoe je begint met Jasmine staan op GitHub.
6. Jest
Jest noemt zichzelf een uitgebreide JavaScript-testoplossing die meteen werkt, zonder configuratie, voor de meeste JavaScript-projecten. Test hebben een unieke global state en kunnen parallel worden uitgevoerd. Eerder gefaalde tests worden als eerste opnieuw gedraaid, runs worden geordend op basis van de lengte van het testbestand. Jest werkt met populaire JavaScript-technologieën als Angular, Babel, Node.js, React en Vue. Tests kunnen worden gebruikt om grote objecten te volgen, met snapshots embedded inline of naast de test weergegeven. In testbestanden zet Jest methodes en objecten in het global environment, zonder dat je ze hoeft te importeren.
Installatie: Instructies voor het installeren van Jest kun je op GitHub vinden.
7. Luna
Dit is een opionated testframework voor unit-tests van JavaScript, dat geen configuratie vereist. Ontwikkelaars kunnen hun eerste unit-tests binnen enkele minuten draaien, zo staat te lezen in de documentatie. Rapportages over de geteste code worden gegenereerd zonder dat je daar andere modules voor installeert. Tests moeten wel worden geschreven als ES6-modules en ze worden standaard in de browser gedraaid. Parallellisatie wordt ondersteund, met gelijktijdig draaiende testgroepen. Luna is deels geïnspireerd door de ingebouwde testtool van Google's Go. Luna is niet gemaakt voor transpiling, dus werkt niet met CoffeeScript of TypeScript. Ook is er geen ondersteuning voor oudere browsers.
Installatie: Op GitHub staan instructies over het installeren van Luna.
8. Mocha
Dit is een featurerijk framework dat op Node.js en in de browser draait. Mocha belooft het testen van asynchrone code "simpel en leuk" te maken. Tests worden serieel gedraaid, wat volgens voorstanders betekent dat je nauwkeurige, flexibele resultaten krijgt waarbij je exceptions vindt die niet worden afgevangen in de code. Voor continue tests kunnen ontwikkelaars Wallaby.js gebruiken om realtime code-coverage van elke assertie-library uit te voeren. Mocha integreert ook met applicatie-frameworks, bijvoorbeeld met Konacha, waarmee ontwikkelaars Mocha gebruiken om JavaScript te testen in Ruby on Rails-applicaties. Er is verder een aantal plug-ins beschikbaar, zoals een Mocha-zijbalk in Visual Studio Code.
Installatie: Op de website van het Mocha-project vindt je instructies voor installatie en documentatie voor de vele features.
9. Protractor
Protractor is een end-to-end testframework voor Angular en diens voorganger AngularJS. Tests worden gedraaid op applicaties in een browser en Protacter gaat met een applicatie om zoals een eindgebruiker zou doen. Angular-specifieke elementen worden ondersteund zonder enige setup. Een automatische wachtfeature zorgt ervoor dat Protractor de volgende stap in een test kan uitvoeren zodra de webpagina geplande tests afrondt. De tool is gebouwd bovenop WebdriverJS, een JavaScript-implementatie van de geautomatiseerde browser Selenium.
Installatie: Instructies voor het installeren van Protractor staan op diens website.
10. QUnit
QUnit is een JavaScript-framework voor unit-tests die jQuery, jQuery UI en jQuery Mobile gebruikt. Sterker nog, QUnit is oorspronkelijk ontwikkeld als deel van jQuary door diens bedenker John Resig. QUnit heeft een opinionated API die simpel en breed in te zetten is en het kan worden gebruikt om generieke JavaScript-code te testen. Als een test of assertie faalt, belooft QUnit zo snel mogelijk feedback te geven met genoeg details om het issue te doorgronden. Assertion-methodes in QUnit volgen de testspecificatie CommonJS. Het framework ondersteunt browsers die worden ondersteund door jQuery 3.x, inclusief varianten van Chrome, Edge, Firefox, Internet Explorer en Safari.
Installatie: Je kunt QUnit downloaden en installeren vanaf de QUnit-website of via jQuery.cdn.
Reageer
Preview