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.




