Jasmine Framework-zelfstudie: testen van eenheden met voorbeeld
⚡ Slimme samenvatting
Jasmine is de gedragsgestuurde JavaEen framework voor het testen van scripts dat Node.js-unit tests uitvoert zonder browser of DOM. Het maakt gebruik van describe-blokken, specs en expect-matchers om te verifiëren dat elke geëxporteerde functie zich gedraagt zoals gedocumenteerd.

Wat is JasmijnJS?
Jasmine is open-source en het populairst JavaScriptbibliotheek-testframework om elk type te testen JavaScripttoepassing. Jasmine volgt de Behavior Driven Development (BDD)-procedure om ervoor te zorgen dat elke regel van JavaScriptinstructie is correct getest.
Waar wordt het Jasmine Framework voor gebruikt?
Testen is een essentieel onderdeel van elke applicatie. Voor unit-testen in Node.js is Jasmine het beschikbare framework. Begin jaren 2000 bestond er al een framework voor testen. JavaScript toepassingen genaamd JsUnit. Later Dit framework is geüpgraded en staat nu bekend als Jasmine.
Jasmine helpt bij het automatiseren Testen van een eenheidiets wat een belangrijke praktijk is geworden bij de ontwikkeling vanping en het implementeren van moderne webapplicaties.
In deze Jasmine-tutorial leert u hoe u uw omgeving kunt instellen met Jasmine en hoe u Jasmine-tests kunt uitvoeren voor uw eerste Node.js-toepassing.
Jasmine voor het testen van Node.js-applicaties
Jasmine is een Gedragsgestuurde ontwikkeling (BDD) toetsingskader voor JavaScript. Het doet niet vertrouw op browsers, DOM of wat dan ook JavaScriptframework. Daardoor is het geschikt voor websites. Node.js projecten, of waar dan ook dat JavaScript kan worden uitgevoerd. Om Jasmine te kunnen gebruiken, moet u eerst de benodigde Jasmine-modules downloaden en installeren.
Hoe u de Jasmine-testomgeving instelt
In deze Jasmine Node.js-tutorial moet je vervolgens je omgeving initialiseren en het Jasmine-configuratiebestand bekijken. De onderstaande stappen laten zien hoe je Jasmine in je omgeving instelt.
Stap 1) Installeer NPM-modules
Je moet NPM installeren De Jasmine-module maakt het mogelijk om het Jasmine-framework vanuit een Node-applicatie te gebruiken. Om de jasmine-node-module te installeren, voert u de onderstaande opdracht uit.
npm install jasmine-node
Versie-opmerking (2026): Het bovenstaande historische commando werkt nog steeds, maar de jasmijn-node Deze module bevindt zich in de onderhoudsmodus en bevat Jasmine 1.3, dus gebruik hem alleen voor oudere projecten. Nieuwe Node.js-projecten installeren de onderhouden versie. Jasmine CLI als ontwikkelafhankelijkheid en roept deze aan via npx:
npm install --save-dev jasmine npx jasmine init
Jasmine 6.x is de huidige hoofdlijn en ondersteunt Node.js 20, 22 en 24, waarbij Node.js 24 de actieve LTS-release is in 2026.
Stap 2) Initialiseer de Jasmine-omgeving
Het project initialiseren – Hiermee maakt Jasmine een `spec`-directory en een `configuration.json`-bestand voor je aan. De `spec`-directory wordt gebruikt om al je testbestanden op te slaan. Zo weet Jasmine waar al je tests zich bevinden en kan ze dienovereenkomstig uitvoeren. JSON Dit bestand wordt gebruikt om specifieke configuratiegegevens over Jasmine op te slaan.
Om de Jasmine-omgeving te initialiseren, voert u de onderstaande opdracht uit.
jasmine init
Stap 3) Inspecteer uw configuratiebestand.
Het configuratiebestand wordt opgeslagen in de map spec/support als jasmine.json. Dit bestand somt de bronbestanden en spec-bestanden op die u in de Jasmine Runner wilt opnemen.
Onderstaande schermafbeelding toont een typisch voorbeeld van het jasmine.json-bestand voor Jasmine.
- Merk op dat de spec-directory hier wordt gespecificeerd. Zoals eerder opgemerkt, zoekt jasmine wanneer het wordt uitgevoerd naar alle tests in deze map.
- Het volgende dat u moet opmerken is de parameter spec_files. Deze geeft aan dat welke testbestanden ook worden gemaakt, deze moeten worden toegevoegd aan het trefwoord 'spec'.
Configuratie-opmerking: In Jasmine 6.x accepteert hetzelfde bestand ook helpers, die eenmaal geladen worden vóór elke specificatie, en een env blok met opties zoals random en stopSpecOnExpectationFailure. De standaard spec_files glob is **/*[sS]pec.?(m)jsen er kan een ander bestand worden doorgegeven met –config of de JASMINE_CONFIG_PAD variabel.
Vervolgens leren we in deze Jasmine-framework-tutorial hoe we Jasmine kunnen gebruiken om Node.js-applicaties te testen.
Jasmine gebruiken om Node.js-applicaties te testen
Om Jasmine-eenheidstests voor Node.js-applicaties te gebruiken, moet een reeks stappen worden gevolgd.
In ons onderstaande voorbeeld definiëren we een module die twee getallen optelt en die we moeten testen. We maken vervolgens een apart codebestand met de testcode en gebruiken Jasmine om de optelfunctie te testen.
Stap 1) Definieer de code die getest moet worden. We gaan een functie definiëren die 2 getallen optelt en het resultaat retourneert. Deze code wordt geschreven in een bestand genaamd “Add.js.”
De onderstaande schermafbeelding toont de voltooide Add.js-module, met dezelfde code eronder als tekst.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Uitleg
- Het trefwoord “exports” wordt gebruikt om ervoor te zorgen dat de functionaliteit die in dit bestand is gedefinieerd ook daadwerkelijk toegankelijk is voor andere bestanden.
- Vervolgens definiëren we een functie met de naam 'AddNumber'. Deze functie is gedefinieerd om twee parameters te nemen, a en b. De functie is toegevoegd aan de module “exports” om de functie een publieke functie te maken die toegankelijk is voor andere applicatiemodules.
- We zorgen er eindelijk voor dat onze functie de toegevoegde waarde van de parameters retourneert.
Stap 2) Vervolgens moeten we onze Jasmine-testcode definiëren, die we zullen gebruiken om onze "Add"-functie in het bestand Add.js te testen. De onderstaande code moet in een bestand met de naam worden geplaatst. add-spec.js.
NoteHet woord 'spec' moet aan het testbestand worden toegevoegd, zodat Jasmine het kan herkennen.
De onderstaande schermafbeelding toont hetzelfde specificatiebestand geopend in een editor.
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code Uitleg
- We moeten eerst ons Add.js-bestand opnemen, zodat we de functie 'AddNumber' in dit bestand kunnen testen.
- We zijn nu onze testmodule aan het maken. Het eerste deel van de testmodule is het beschrijven van een methode die in feite een naam geeft voor onze test. In dit geval is de naam van onze test “Toevoeging”.
- Het volgende deel is het geven van een beschrijving voor onze test met behulp van de 'it'-methode.
- We roepen nu onze AddNumber-methode aan en geven twee parameters mee: 5 en 6. Deze worden doorgegeven aan onze AddNumber-methode in het Add.js-bestand. De retourwaarde wordt vervolgens opgeslagen in een variabele genaamd value.
- De laatste stap is het uitvoeren van de vergelijking, oftewel onze eigenlijke test. Omdat we verwachten dat de waarde die de functie AddNumber retourneert 11 is, definiëren we dit met behulp van de methode expect(waarde).toBe(de verwachte waarde).
uitgang
- Om de test uit te voeren, moet je het commando jasmijn uitvoeren.
- De onderstaande schermafbeelding laat zien dat Jasmine na het uitvoeren van de opdracht detecteert dat er een test met de naam `add-spec.js` bestaat en deze test vervolgens uitvoert. Eventuele fouten in de test worden weergegeven.
Het voorbeeld 'Toevoegen' gebruikt slechts één matcher, maar Jasmine levert een complete set matchers mee. De onderstaande tabel geeft een overzicht van de matchers die vrijwel elke bewering dekken die u zult schrijven.
Jasmijnlucifers die je het meest zult gebruiken
Een matcher is de vergelijking die volgt op expect(). Plaats .not vóór elke matcher om deze om te keren, zoals in expect(value).not.toBe(11).
| matchers | Wat het controleert | Typisch gebruik |
| zijn | Strikte identiteit, dezelfde vergelijking als === | verwacht(waarde).teZijn(11) |
| gelijk maken | Diepgaande gelijkheid van objecten en arrays | expect(user).toEqual({id: 1}) |
| bevatten | Lidmaatschap binnen een array of een tekenreeks | expect(files).toContain('add-spec.js') |
| nog te definiëren | De waarde is niet ongedefinieerd. | expect(app.AddNumber).toBeDefined() |
| gooien | De ingekapselde functie geeft een foutmelding. | expect(callAdd).toThrow() |
| genoemd worden | Er werd minstens één keer een spion ingeschakeld. | expect(logger.write).toHaveBeenCalled() |
Twee gewoontes zorgen ervoor dat foutmeldingen leesbaar blijven. Gebruik `toBe` alleen voor primitieve gegevenstypen en identieke referenties, omdat twee objecten met dezelfde inhoud nooit gelijk zijn aan elkaar (===). Gebruik `toEqual` voor structuren en voeg `toHaveBeenCalledWith` toe wanneer de argumenten net zo belangrijk zijn als de aanroep zelf.
Opzetten, afbreken en spionnen in Jasmine
Echte suites vereisen een gedeelde status en dubbele resources voor trage samenwerking. Jasmine biedt beide zonder extra pakket.
- voorElk en naElk Voer de code uit vóór en na elke specificatie binnen een beschrijvingsblok, wat de natuurlijke plek is om armaturen opnieuw op te bouwen.
- voor alles en na alles Voer de test één keer uit voor het hele blok, dus bewaar ze voor kostbare werkzaamheden zoals het openen van een aansluiting.
- spyOn(object, 'methode') vervangt een echte methode door een tracking double; voeg .and.returnValue() toe om te bepalen wat het antwoord is.
- jasmine.createSpy('name') Bouwt een zelfstandig double-object voor een callback die geen object heeft om aan te koppelen.
- Asynchrone specificaties kan asynchroon en met await worden gedeclareerd, kan een promise retourneren of kan een done-callback accepteren die precies één keer moet worden aangeroepen.
Spies worden tussen de tests gereset, zodat een testsuite nooit een gesimuleerde methode doorgeeft aan de volgende test. Die isolatie zorgt ervoor dat een falende specificatie wijst op één defect in plaats van een reeks defecten, wat overeenkomt met de discipline die wordt beschreven in de testen van een eenheid grondbeginselen.
Jasmine vs Mocha vs Jest
Jasmine is een van de drie frameworks die dominant zijn. JavaBij het testen van scripts komt de keuze meestal neer op hoeveel bedrading je wilt hebben.
| Aspect | Jasmijn | Mocha | er is |
| Beweringen | Gebouwd in | Toegevoegd, meestal Chai | Gebouwd in |
| Spionnen en spotters | Gebouwd in | Toegevoegd, meestal Sinon | Gebouwd in |
| Uitvoering | Serie- | Serie- | Parallelle processen |
| Snapshots | Nee | Nee | Ja |
| Gemeenschappelijk huis | Angular, pure Node.js | Flexibele Node.js-stacks | React en moderne bundlers |
Pick Mocha wanneer je je eigen assertie- en mocking-stack wilt samenstellen, en er is Bij parallelle uitvoeringen zijn de dekking en momentopnamen belangrijker dan configuratiebeheer. Jasmine blijft de lichtste optie die toch compleet geleverd wordt, en daarom wordt het nog steeds veel gebruikt. automatisering testen vervolg.




