Jasmine Framework Tutorial: Enhetstesting med eksempel
โก Smart oppsummering
Jasmine er den atferdsdrevne JavaSkripttestingsrammeverk som kjรธrer Node.js-enhetstester uten nettleser eller DOM, ved hjelp av beskrivelsesblokker, spesifiserer og forventer at matchere bekrefter at alle eksporterte funksjoner oppfรธrer seg som dokumentert.
Hva er JasmineJS?
Jasmine er en รฅpen kildekode og mest populรฆr JavaSkriptbibliotek testramme for รฅ teste alle slags JavaSkriptapplikasjon. Jasmine fรธlger Behavior Driven Development (BDD) prosedyre for รฅ sikre at hver linje av JavaSkriptsetningen er skikkelig enhetstestet.
Hva brukes Jasmine Framework til?
Testing er et nรธkkelelement i enhver applikasjon. For Node.js-enhetstesting kalles rammeverket som er tilgjengelig for testing Jasmine. Tidlig i 2000 fantes det et rammeverk for testing JavaScript applikasjoner kalt JsUnit. Later dette rammeverket ble oppgradert og er nรฅ kjent som Jasmine.
Jasmine hjelper i automatisert Enhetstesting, noe som har blitt en ganske sentral praksis nรฅr man utviklerping og distribusjon av moderne webapplikasjoner.
I denne Jasmine-opplรฆringen lรฆrer du hvordan du setter opp miljรธet ditt med Jasmine og hvordan du kjรธrer Jasmine-tester for din fรธrste Node.js-applikasjon.
Jasmine for testing av Node.js-applikasjoner
Jasmine er en Atferdsdrevet utvikling (BDD) testramme for JavaManus. Det gjรธr det ikke stole pรฅ nettlesere, DOM eller andre JavaSkriptrammeverk. Dermed er det egnet for nettsteder, node.js prosjekter, eller hvor som helst som JavaSkriptet kan kjรธres. For รฅ begynne รฅ bruke Jasmine, mรฅ du fรธrst laste ned og installere de nรธdvendige Jasmine-modulene.
Hvordan sette opp Jasmine testmiljรธ
I denne Jasmine Node.js-opplรฆringen mรฅ du initialisere miljรธet ditt og inspisere Jasmine-konfigurasjonsfilen. Trinnene nedenfor viser hvordan du konfigurerer Jasmine i miljรธet ditt.
Trinn 1) Installer NPM-moduler
Du mรฅ Installer NPM jasmine-modulen for รฅ bruke Jasmine-rammeverket fra et Node-program. For รฅ installere jasmine-node-modulen, kjรธr kommandoen nedenfor.
npm install jasmine-node
Versjonsnotat (2026): den historiske kommandoen ovenfor fungerer fortsatt, men jasmin-node Modulen er i vedlikeholdsmodus og inkluderer Jasmine 1.3, sรฅ behold den kun for eldre prosjekter. Nytt Node.js-arbeid installerer den vedlikeholdte Jasmine CLI som en utvikleravhengighet og kaller den gjennom npx:
npm install --save-dev jasmine npx jasmine init
Jasmin 6.x er den nรฅvรฆrende hovedlinjen og stรธtter Node.js 20, 22 og 24, og Node.js 24 er den aktive LTS-utgivelsen i 2026.
Trinn 2) Initialiser Jasmine-miljรธet
Initialisering av prosjektet โ Ved รฅ gjรธre dette oppretter Jasmine en spec-katalog og konfigurasjons-json for deg. Spec-katalogen brukes til รฅ lagre alle testfilene dine. Ved รฅ gjรธre dette vil Jasmine vite hvor alle testene dine er, og kan deretter kjรธre dem deretter. JSON Filen brukes til รฅ lagre spesifikk konfigurasjonsinformasjon om Jasmine.
For รฅ initialisere Jasmine-miljรธet, kjรธr kommandoen nedenfor
jasmine init
Trinn 3) Inspiser konfigurasjonsfilen din.
Konfigurasjonsfilen vil bli lagret i spec/support-mappen som jasmine.json. Denne filen oppregner kildefilene og spesifikasjonsfilene du vil at Jasmine-lรธperen skal inkludere.
Skjermbildet nedenfor viser et typisk eksempel pรฅ jasmine.json-filen for Jasmine.
- Merk at spesifikasjonskatalogen er spesifisert her. Som nevnt tidligere, nรฅr jasmine kjรธrer, sรธker den etter alle testene i denne katalogen.
- Den neste tingen รฅ merke seg er spec_files-parameteren โ Dette angir at uansett hvilke testfiler som opprettes, skal de legges til med nรธkkelordet 'spec'.
Konfigurasjonsmerknad: I Jasmine 6.x godtar den samme filen ogsรฅ hjelpere, som lastes inn รฉn gang fรธr hver spesifikasjon, og en env blokkholdingsalternativer som tilfeldig og stopSpecOnExpectationFailure. Standard spec_files glob er **/*[sS]pec.?(m)js, og en annen fil kan sendes med โkonfigurasjon eller JASMINE_CONFIG_PATH variabel.
Neste i denne Jasmine-rammeveiledningen vil vi lรฆre hvordan du bruker Jasmine til รฅ teste Node.js-applikasjoner.
Hvordan bruke Jasmine til รฅ teste Node.js-applikasjoner
For รฅ bruke Jasmine-enhetstesting for Node.js-applikasjoner, mรฅ en rekke trinn fรธlges.
I eksemplet nedenfor skal vi definere en modul som legger sammen to tall som mรฅ testes. Deretter definerer vi en separat kodefil med testkoden og bruker Jasmine til รฅ teste Add-funksjonen deretter.
Trinn 1) Definer koden som skal testes. Vi skal definere en funksjon som legger til 2 tall og returnerer resultatet. Denne koden skal skrives i en fil som heter "Add.js."
Skjermbildet nedenfor viser den ferdige Add.js-modulen, og den samme koden gjentas som tekst under den.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Forklaring
- Nรธkkelordet "eksporter" brukes for รฅ sikre at funksjonaliteten som er definert i denne filen faktisk kan nรฅs av andre filer.
- Vi definerer da en funksjon kalt "AddNumber". Denne funksjonen er definert til รฅ ta 2 parametere, a og b. Funksjonen legges til modulen "eksporterer" for รฅ gjรธre funksjonen til en offentlig funksjon som kan nรฅs av andre applikasjonsmoduler.
- Vi fรฅr endelig funksjonen vรฅr til รฅ returnere tilleggsverdien til parameterne.
Trinn 2) Deretter mรฅ vi definere Jasmine-testkoden vรฅr, som skal brukes til รฅ teste ยซAddยป-funksjonen vรฅr i Add.js-filen. Koden nedenfor mรฅ legges i en fil som heter add-spec.js.
MerknaderOrdet ยซspecยป mรฅ legges til i testfilen slik at det kan oppdages av Jasmine.
Skjermbildet nedenfor viser den samme spesifikasjonsfilen รฅpen i et redigeringsprogram.
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 Forklaring
- Vi mรฅ fรธrst inkludere Add.js-filen vรฅr slik at vi kan teste 'AddNumber'-funksjonen i denne filen.
- Vi lager nรฅ vรฅr testmodul. Den fรธrste delen av testmodulen er รฅ beskrive en metode som i utgangspunktet gir et navn til testen vรฅr. I dette tilfellet er navnet pรฅ testen vรฅr "Addition".
- Den neste biten er รฅ gi en beskrivelse for testen vรฅr ved รฅ bruke 'it'-metoden.
- Vi kaller nรฅ AddNumber-metoden vรฅr og sender inn to parametere, 5 og 6. Dette sendes til AddNumber-metoden vรฅr i Add.js-filen. Returverdien lagres deretter i en variabel kalt verdi.
- Det siste trinnet er รฅ gjรธre sammenligningen eller vรฅr faktiske test. Siden vi forventer at verdien som returneres av AddNumber-funksjonen skal vรฆre 11, definerer vi dette ved hjelp av metoden expect(value).toBe(den forventede verdien).
Produksjon
- For รฅ kjรธre testen, mรฅ man kjรธre kommandoen jasmine.
- Skjermbildet nedenfor viser at etter at jasmine-kommandoen er kjรธrt, vil den oppdage at det finnes en test kalt add-spec.js og utfรธre testen deretter. Hvis det er noen feil i testen, vil det vises deretter.
Eksemplet ยซAddยป bruker รฉn matcher, men Jasmine sender et komplett sett med dem. Tabellen nedenfor viser de som dekker nesten alle pรฅstander du skriver.
Jasmin-matchere du vil bruke mest
En matcher er sammenligningen som fรธlger expect(). Kjede .not fรธr noen matcher for รฅ invertere den, som i expect(value).not.toBe(11).
| matchere | Hva den sjekker | Typisk bruk |
| รฅ vรฆre | Streng identitet, samme sammenligning som === | forvent(verdi).รฅVรฆre(11) |
| til lik | Dyp likhet mellom objekter og matriser | forventer(bruker).tillik({id: 1}) |
| รฅ inneholde | Medlemskap i en matrise eller en streng | forventer(filer).toContain('add-spec.js') |
| skal defineres | Verdien er ikke udefinert | expect(app.AddNumber).toBeDefined() |
| รฅ kaste | Den innpakkede funksjonen genererer en feil | forventer(callAdd).toThrow() |
| รฅ ha blitt kalt | En spion ble pรฅkalt minst รฉn gang | forventer(logger.skrive).รฅHaBlittKallet() |
To vaner holder feil lesbare. Bruk toBe kun for primitiver og identiske referanser, fordi to objekter med samme innhold aldri er ===. Bruk toEqual for strukturer, og legg til toHaveBeenCalledWith nรฅr argumentene er like viktige som selve kallet.
Oppsett, demontering og spioner i Jasmine
Ekte suiter trenger delt tilstand og dobler for trege samarbeidspartnere. Jasmine leverer begge uten ekstra pakker.
- fรธrHver og etterHver kjรธr fรธr og etter hver spesifikasjon inne i en beskrivelsesblokk, som er det naturlige stedet รฅ gjenoppbygge inventar.
- fรธr alt og etter alt kjรธr รฉn gang for hele blokken, sรฅ reserver dem for dyrt arbeid som รฅ รฅpne en forbindelse.
- spyOn(objekt, 'metode') erstatter en reell metode med en tracking double; legg til .and.returnValue() for รฅ kontrollere hva den svarer.
- jasmin.createSpy('navn') bygger en frittstรฅende double for en tilbakeringing som ikke har noe objekt รฅ knytte seg til.
- Asynkrone spesifikasjoner kan deklareres asynkron og avventes, kan returnere et lรธfte, eller kan akseptere et ferdig tilbakering som mรฅ kalles nรธyaktig รฉn gang.
Spioner tilbakestilles mellom spesifikasjoner, slik at en suite aldri lekker en stubbet metode inn i neste test. Denne isolasjonen er det som gjรธr at en mislykket spesifikasjon peker pรฅ รฉn feil i stedet for en kjede av dem, som er den samme disiplinen beskrevet i enhetstesting grunnleggende.
Jasmine vs Mocha vs Jest
Jasmine er et av tre rammeverk som dominerer JavaSkripttesting, og valget kommer vanligvis ned til hvor mye kabling du vil eie.
| Aspekt | Jasmine | Mocha | det er |
| Pรฅstander | Bygget i | Tilsatt, vanligvis Chai | Bygget i |
| Spioner og spottere | Bygget i | Lagt til, vanligvis Sinon | Bygget i |
| Gjennomfรธring | Serial | Serial | Parallelt pรฅ tvers av prosesser |
| snapshots | Nei | Nei | Ja |
| Felles hjem | Angular, enkel Node.js | Fleksible Node.js-stabler | React og moderne pakkere |
Pick Mocha nรฅr du vil sette sammen din egen pรฅstands- og hรฅnstabel, og det er Nรฅr parallelle kjรธringer, dekning og รธyeblikksbilder er viktigere enn konfigurasjonskontroll, er Jasmine fortsatt det letteste alternativet som fortsatt leveres komplett, og det er derfor det fortsatt er vanlig i automatiseringstesting suiter.




