Jasmine Framework Tutorial: Enhetstestning med exempel
⚡ Smart sammanfattning
Jasmine är den beteendedrivna JavaSkripttestningssystem som kör Node.js-enhetstester utan webbläsare eller DOM, med hjälp av describe-block, specificerar och förväntar sig att matchare verifierar att varje exporterad funktion beter sig som dokumenterat.
Vad är JasmineJS?
Jasmine är en öppen källkod och mest populär JavaSkript bibliotek testa ram för att testa någon form av JavaSkriptapplikation. Jasmine följer Behavior Driven Development (BDD) procedur för att säkerställa att varje rad av JavaSkriptsatsen är korrekt enhetstestad.
Vad används Jasmine Framework till?
Testning är en viktig del av alla applikationer. För Node.js-enhetstestning kallas ramverket Jasmine. I början av 2000-talet fanns det ett ramverk för testning. JavaScript applikationer som kallas JsUnit. Later detta ramverk har uppgraderats och är nu känt som Jasmine.
Jasmine hjälper till att automatisera Enhetstestning, något som har blivit en ganska viktig praxis vid utvecklingping och driftsätta moderna webbapplikationer.
I den här Jasmine-handledningen kommer du att lära dig hur du ställer in din miljö med Jasmine och hur du kör Jasmine-tester för din första Node.js-applikation.
Jasmine för att testa Node.js-applikationer
Jasmine är en Beteendedriven utveckling (BDD) testram för JavaManus. Det gör det inte lita på webbläsare, DOM eller något annat JavaSkriptramverk. Således är det lämpligt för webbplatser, node.js projekt, eller någonstans där JavaSkriptet kan köras. För att börja använda Jasmine måste du först ladda ner och installera de nödvändiga Jasmine-modulerna.
Hur man ställer in Jasmine testmiljö
I den här handledningen för Jasmine Node.js behöver du initiera din miljö och inspektera Jasmines konfigurationsfil. Stegen nedan visar hur du konfigurerar Jasmine i din miljö.
Steg 1) Installera NPM-moduler
Du måste Installera NPM jasmine-modulen för att använda Jasmine-ramverket inifrån en Node-applikation. För att installera jasmine-node-modulen, kör kommandot nedan.
npm install jasmine-node
Versionsnotering (2026): det historiska kommandot ovan fungerar fortfarande, men jasmin-nod Modulen är i underhållsläge och paketerar Jasmine 1.3, så behåll den endast för äldre projekt. Nytt Node.js-arbete installerar den underhållna modulen. Jasmine CLI som ett dev-beroende och anropar det via npx:
npm install --save-dev jasmine npx jasmine init
Jasmin 6.x är den nuvarande huvudlinjen och stöder Node.js 20, 22 och 24, och Node.js 24 är den aktiva LTS-utgåvan 2026.
Steg 2) Initiera jasminmiljön
Initiera projektet – Genom att göra detta skapar Jasmine en spec-katalog och konfigurations-json åt dig. Spec-katalogen används för att lagra alla dina testfiler. Genom att göra detta kommer Jasmine att veta var alla dina tester finns och kan sedan köra dem därefter. JSON filen används för att lagra specifik konfigurationsinformation om Jasmine.
För att initiera Jasmine-miljön, kör kommandot nedan
jasmine init
Steg 3) Inspektera din konfigurationsfil.
Konfigurationsfilen kommer att lagras i spec/support-mappen som jasmine.json. Den här filen räknar upp källfilerna och specifikationsfilerna som du vill att Jasmine runner ska inkludera.
Skärmdumpen nedan visar ett typiskt exempel på jasmine.json-filen för Jasmine.
- Observera att spec-katalogen anges här. Som nämnts tidigare, när jasmine körs, söker den efter alla tester i den här katalogen.
- Nästa sak att notera är parametern spec_files – Detta anger att vilka testfiler som än skapas ska läggas till med nyckelordet 'spec'.
Konfigurationsanmärkning: I Jasmine 6.x accepterar samma fil även hjälpare, som laddas en gång före varje specifikation, och en env blockhållningsalternativ som slumpmässig och stopSpecOnExpectationFailure. Standard globen spec_files är **/*[sS]pec.?(m)js, och en annan fil kan skickas med –konfiguration eller JASMINE_CONFIG_PATH variabel.
Nästa i den här självstudien för Jasmine-ramverket kommer vi att lära oss hur man använder Jasmine för att testa Node.js-applikationer.
Hur man använder Jasmine för att testa Node.js-applikationer
För att kunna använda Jasmine-enhetstestning för Node.js-applikationer måste en rad steg följas.
I vårt exempel nedan ska vi definiera en modul som adderar två tal som behöver testas. Vi definierar sedan en separat kodfil med testkoden och använder Jasmine för att testa Add-funktionen i enlighet därmed.
Steg 1) Definiera koden som ska testas. Vi kommer att definiera en funktion som lägger till 2 tal och returnerar resultatet. Den här koden kommer att skrivas i en fil som heter "Add.js."
Skärmdumpen nedan visar den färdiga Add.js-modulen, och samma kod upprepas som text under den.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Förklaring
- Nyckelordet "export" används för att säkerställa att den funktionalitet som definieras i den här filen faktiskt kan nås av andra filer.
- Vi definierar sedan en funktion som heter "AddNumber". Denna funktion är definierad för att ta 2 parametrar, a och b. Funktionen läggs till i modulen "exporterar" för att göra funktionen till en publik funktion som kan nås av andra applikationsmoduler.
- Vi får äntligen vår funktion att returnera parametrarnas mervärde.
Steg 2) Nästa steg är att definiera vår Jasmine-testkod, som kommer att användas för att testa vår "Add"-funktion i Add.js-filen. Koden nedan måste läggas i en fil som heter add-spec.js.
AnmärkningarOrdet 'spec' måste läggas till i testfilen så att det kan detekteras av Jasmine.
Skärmdumpen nedan visar samma specifikationsfil öppen i en 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 Förklaring
- Vi måste först inkludera vår Add.js-fil så att vi kan testa funktionen 'AddNumber' i den här filen.
- Vi skapar nu vår testmodul. Den första delen av testmodulen är att beskriva en metod som i princip ger ett namn för vårt test. I det här fallet är namnet på vårt test "Addition".
- Nästa bit är att ge en beskrivning av vårt test med 'it'-metoden.
- Vi anropar nu vår AddNumber-metod och skickar in två parametrar, 5 och 6. Detta skickas till vår AddNumber-metod i Add.js-filen. Returvärdet lagras sedan i en variabel som heter värde.
- Det sista steget är att göra jämförelsen eller vårt faktiska test. Eftersom vi förväntar oss att värdet som returneras av AddNumber-funktionen ska vara 11, definierar vi detta med hjälp av metoden expect(value).toBe(det förväntade värdet).
Produktion
- För att köra testet måste man köra kommandot jasmine.
- Skärmdumpen nedan visar att efter att jasmine-kommandot har körts, kommer det att upptäcka att det finns ett test som heter add-spec.js och köra det testet i enlighet därmed. Om det finns några fel i testet kommer det att visas i enlighet med detta.
Exemplet Add använder en enda matchare, men Jasmine levererar en komplett uppsättning av dem. Tabellen nedan listar de som täcker nästan alla påståenden du kommer att skriva.
Jasmine-tändstickor du kommer att använda mest
En matchare är den jämförelse som följer expect(). Kedja .not före någon matchare för att invertera den, som i expect(value).not.toBe(11).
| matchare | Vad den kontrollerar | Typisk användning |
| att vara | Strikt identitet, samma jämförelse som === | förvänta(värde).attVara(11) |
| till Lika | Djup likhet mellan objekt och arrayer | förvänta(användare).tillLika med({id: 1}) |
| att innehålla | Medlemskap i en array eller en sträng | förvänta(filer).toContain('add-spec.js') |
| att definieras | Värdet är inte odefinierat | förvänta(app.LäggTillNummer).attBeDefinieras() |
| att kasta | Den inslagna funktionen genererar ett fel | förvänta(callAdd).toThrow() |
| att ha blivit uppkallad | En spion anropades minst en gång | förvänta(logger.write).attHaVitsAnropad() |
Två vanor gör fel läsbara. Använd toBe endast för primitiva objekt och identiska referenser, eftersom två objekt med samma innehåll aldrig är ===. Använd toEqual för strukturer och lägg till toHaveBeenCalledWith när argumenten är lika viktiga som själva anropet.
Uppsättning, nedmontering och spioner i Jasmine
Riktiga sviter behöver delat tillstånd och dubbelrum för långsamma samarbetspartners. Jasmine tillhandahåller båda utan något extra paket.
- före varje och efter varje kör före och efter varje specifikation inuti ett beskrivningsblock, vilket är den naturliga platsen att bygga om fixturer.
- före allt och efter allt kör en gång för hela blocket, så reservera dem för dyrt arbete som att öppna en anslutning.
- spyOn(objekt, 'metod') ersätter en verklig metod med en tracking double; lägg till .and.returnValue() för att kontrollera vad den svarar på.
- jasmine.createSpy('namn') bygger en fristående dubbel för en återanrop som inte har något objekt att koppla till.
- Asynkrona specifikationer kan deklareras asynkron och avvaktas, kan returnera ett löfte eller kan acceptera ett klart återanrop som måste anropas exakt en gång.
Spioner återställs mellan specifikationer, så en svit läcker aldrig en stubbad metod till nästa test. Den isoleringen är det som gör att en misslyckad specifikation pekar på en defekt istället för en kedja av dem, vilket är samma disciplin som beskrivs i enhetstestning grunderna.
Jasmine vs Mocha vs Jest
Jasmine är ett av tre ramverk som dominerar JavaSkripttestning, och valet handlar oftast om hur mycket kablage du vill äga.
| Aspect | Jasmin | Mocka | det finns |
| Påståenden | Inbyggd | Tillsatt, vanligtvis Chai | Inbyggd |
| Spioner och hånare | Inbyggd | Tillagd, vanligtvis Sinon | Inbyggd |
| Utförande | Serial | Serial | Parallellt över processer |
| snapshots | Nej | Nej | Ja |
| Gemensamt hem | Angular, enkel Node.js | Flexibla Node.js-stackar | React och moderna bundlers |
Pick Mocka när du vill sätta ihop din egen påstående- och hånstack, och det finns När parallella körningar, täckning och ögonblicksbilder är viktigare än konfigurationskontroll. Jasmine är fortfarande det lättaste alternativet som fortfarande levereras komplett, vilket är anledningen till att det fortfarande är vanligt förekommande i automatiseringstestning sviter.




