Jasmine Framework Tutorial: Yksikkötestaus esimerkin kanssa

⚡ Älykäs yhteenveto

Jasmine on käyttäytymislähtöinen JavaSkriptitestauskehys, joka suorittaa Node.js-yksikkötestejä ilman selainta tai DOM:ia käyttäen describe-lohkoja. Se määrittää ja odottaa matching-funktioita varmistamaan, että jokainen viety funktio toimii dokumentoidusti.

  • 🔘 Kehyksen rooli: Jasmine testaa mitä tahansa JavaSkripti ilman selaimia, DOMia tai apukirjastoja.
  • ☑️ Ympäristön asetukset: Asenna moduuli, suorita jasmine init ja tarkista sitten spec/support/jasmine.json.
  • ✅ Tekniset tiedot: describe nimeää sarjan, määrittelee specin ja expect vahvistaa tuloksen.
  • 🧪 Yhteensopivat: toBe, toEqual, toContain, toThrow ja toHaveBeenCalled kattavat useimmat väittämät.
  • 🛠️ Moderni juoksija: Ylläpidetty jasmine-paketti korvaa ylläpitämättömän jasmine-node-moduulin.
  • 📊 Kehyksen valinta: Jasmine toimittaa väitteitä ja vakoojia, kun taas Jest lisää rinnakkaisia ​​suorituksia ja tilannekuvia.

Jasmine-kehysopas Node.js-sovellusten yksikkötestaukseen

Mikä on JasmineJS?

Jasmine on avoimen lähdekoodin ja suosituin JavaSkriptikirjaston testauskehys minkä tahansa testaamiseen JavaKäsikirjoitussovellus. Jasmine noudattaa Behavior Driven Development (BDD) -menettelyä varmistaakseen, että jokainen rivi JavaSkriptilause on oikein yksikkötestattu.

Mihin Jasmine Frameworkia käytetään?

Testaus on avainasemassa missä tahansa sovelluksessa. Node.js-yksikkötestausta varten käytettävissä oleva testauskehys on nimeltään Jasmine. Vuoden 2000 alussa oli olemassa testauskehys JavaKäsikirjoitus sovelluksia nimeltä JsUnit. Later tämä kehys päivitettiin ja tunnetaan nyt nimellä Jasmine.

Jasmiini auttaa automatisoinnissa Yksikkötestaus, josta on tullut varsin keskeinen käytäntö kehitystyössäping ja nykyaikaisten verkkosovellusten käyttöönottoa.

Tässä Jasmine-opetusohjelmassa opit määrittämään ympäristösi Jasminella ja suorittamaan Jasmine-testejä ensimmäiselle Node.js-sovelluksellesi.

Jasmine Node.js-sovellusten testaamiseen

Jasmine on a Behavior Driven Development (BDD) testauskehys JavaKäsikirjoitus. Se tekee emme luottaa selaimiin, DOM:iin tai mihin tahansa JavaSkriptikehys. Siksi se sopii verkkosivustoille, Node.js projekteihin tai mihin tahansa, missä JavaSkripti voi ajaa. Aloittaaksesi Jasminen käytön, sinun on ensin ladattava ja asennettava tarvittavat Jasmine-moduulit.

Jasmine Test Environmentin määrittäminen

Seuraavaksi tässä Jasmine Node.js -opetusohjelmassa sinun on alustettava ympäristösi ja tarkastettava Jasminen määritystiedosto. Alla olevat vaiheet näyttävät, miten Jasmine asennetaan ympäristöösi.

Vaihe 1) Asenna NPM-moduulit
Sinun täytyy Asenna NPM jasmine-moduulia Jasmine-kehyksen käyttämiseksi Node-sovelluksesta. Asentaaksesi jasmine-node-moduulin, suorita alla oleva komento.

npm install jasmine-node

Versiohuomautus (2026): yllä oleva historiallinen komento toimii edelleen, mutta jasmine-solmu moduuli on ylläpitotilassa ja sisältää Jasmine 1.3:n, joten pidä se vain vanhoissa projekteissa. Uusi Node.js-työ asentaa ylläpidetyn Jasmine CLI kehittäjäriippuvuutena ja kutsuu sitä npx:n kautta:

npm install --save-dev jasmine
npx jasmine init

Jasmine 6.x on nykyinen päälinja ja tukee Node.js 20:tä, 22:ta ja 24:ää, ja Node.js 24 on Active LTS -julkaisu vuonna 2026.

Vaihe 2) Alusta Jasmine Environment
Projektin alustaminen – Tällä tavoin Jasmine luo sinulle spec-hakemiston ja määritysjson-tiedoston. Spec-hakemistoon tallennetaan kaikki testitiedostosi. Näin Jasmine tietää, missä kaikki testisi ovat, ja voi sitten suorittaa ne vastaavasti. JSON tiedostoa käytetään Jasmineen liittyvien tiettyjen määritystietojen tallentamiseen.

Alustaaksesi Jasmine-ympäristön, suorita alla oleva komento

jasmine init

Vaihe 3) Tarkista määritystiedostosi.
Määritystiedosto tallennetaan spec/support-kansioon nimellä jasmine.json. Tämä tiedosto luettelee lähdetiedostot ja tekniset tiedostot, jotka haluat Jasmine Runnerin sisällyttävän.

Alla oleva kuvakaappaus näyttää tyypillisen esimerkin Jasminen jasmine.json-tiedostosta.

Jasmine-määritystiedosto spesifikaatioiden tukikansiossa, jossa näkyy spesifikaatiohakemisto ja spec_files

  1. Huomaa, että tekninen hakemisto on määritetty tässä. Kuten aiemmin todettiin, kun jasmine suoritetaan, se etsii kaikki testit tästä hakemistosta.
  2. Seuraava huomioitava asia on parametri spec_files – Tämä tarkoittaa, että luodut testitiedostot tulee liittää "spec"-avainsanalla.

Kokoonpanohuomautus: Jasmine 6.x:ssä sama tiedosto hyväksyy myös auttajia, jotka latautuvat kerran ennen jokaista spesifikaatiota, ja env lohkonpitoasetukset, kuten random ja stopSpecOnExpectationFailure. Oletusarvoinen spec_files glob on **/*[sS]pec.?(m)js, ja eri tiedosto voidaan välittää –konfiguraatio tai JASMINE_CONFIG_PATH muuttuja.

Seuraavaksi tässä Jasmine-kehysopetusohjelmassa opimme käyttämään Jasminea Node.js-sovellusten testaamiseen.

Kuinka käyttää Jasminea Node.js-sovellusten testaamiseen

Jotta voit käyttää Jasmine-yksikkötestausta Node.js-sovelluksissa, sinun on suoritettava sarja vaiheita.

Alla olevassa esimerkissämme määrittelemme moduulin, joka laskee yhteen kaksi testattavaa lukua. Sen jälkeen määrittelemme erillisen kooditiedoston testikoodilla ja testaamme sitten Add-funktion Jasminella.

Vaihe 1) Määritä koodi, joka on testattava. Aiomme määrittää funktion, joka lisää 2 numeroa ja palauttaa tuloksen. Tämä koodi kirjoitetaan tiedostoon nimeltä "Add.js".

Alla olevassa kuvakaappauksessa näkyy valmis Add.js-moduuli, ja sama koodi toistetaan tekstinä sen alla.

Add.js-moduuli, joka vie AddNumber-funktion, joka palauttaa kahden parametrin summan

var exports=module.exports={};
exports.AddNumber=function(a,b)
{
return a+b;
};

Code Selitys

  1. Vienti-avainsanaa käytetään varmistamaan, että muut tiedostot voivat todella käyttää tässä tiedostossa määritettyjä toimintoja.
  2. Tämän jälkeen määritämme funktion nimeltä "AddNumber". Tämä funktio on määritetty ottamaan 2 parametria, a ja b. Toiminto lisätään moduuliin "vientit", jotta toiminto on julkinen toiminto, jota muut sovellusmoduulit voivat käyttää.
  3. Viimeinkin saamme funktiomme palauttamaan parametrien lisäarvon.

Vaihe 2) Seuraavaksi meidän on määriteltävä Jasmine-testikoodi, jota käytetään Add.js-tiedostossa olevan "Add"-funktion testaamiseen. Alla oleva koodi tulee sijoittaa tiedostoon nimeltä add-spec.js.

HuomautuksiaSana 'spec' on lisättävä testitiedostoon, jotta Jasmine voi havaita sen.

Alla olevassa kuvakaappauksessa sama spesifikaatiotiedosto on avattu editorissa.

add-spec.js-tiedosto, jossa on describe-sviitti ja it-spesifikaatio, joka vahvistaa AddNumber-määrityksen ja palauttaa arvon 11

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 Selitys

  1. Meidän on ensin sisällytettävä Add.js-tiedostomme, jotta voimme testata tämän tiedoston AddNumber-funktiota.
  2. Luomme nyt testimoduuliamme. Testimoduulin ensimmäinen osa on kuvata menetelmä, joka periaatteessa antaa nimen testillemme. Tässä tapauksessa testimme nimi on "Lisäys".
  3. Seuraava bitti on antaa kuvaus testillemme käyttämällä it-menetelmää.
  4. Kutsumme nyt AddNumber-metodia ja lähetämme kaksi parametria, 5 ja 6. Nämä välitetään AddNumber-metodille Add.js-tiedostossa. Paluuarvo tallennetaan sitten value-nimiseen muuttujaan.
  5. Viimeinen vaihe on vertailun eli varsinaisen testin tekeminen. Koska odotamme AddNumber-funktion palauttaman arvon olevan 11, määrittelemme tämän käyttämällä metodia expect(arvo).toBe(odotusarvo).

ulostulo

  1. Testin suorittamiseksi on suoritettava komento jasmine.
  2. Alla oleva kuvakaappaus näyttää, että jasmine-komennon suorittamisen jälkeen se havaitsee add-spec.js-nimisen testin ja suorittaa sen sen mukaisesti. Jos testissä on virheitä, ne näytetään sen mukaisesti.

jasmine-komennon konsolin tuloste, joka raportoi suoritetun add-spec-testin

Add-esimerkissä käytetään vain yhtä matcheria, mutta Jasmine toimittaa niitä kokonaisen sarjan. Alla olevassa taulukossa on lueteltu ne, jotka kattavat lähes kaikki kirjoittamasi väitteet.

Jasmine Matchers -tuotteita, joita käytät eniten

Matcher on vertailufunktio, joka seuraa expect()-funktiota. Ketjuta .not ennen mitä tahansa matcheria kääntääksesi sen, kuten expect(value).not.toBe(11)-funktiossa.

matchers Mitä se tarkistaa Tyypillinen käyttö
olla Tiukka identiteetti, sama vertailu kuin === odottaa(arvo).olla(11)
to Equal Objektien ja taulukoiden syvä tasa-arvo odota(käyttäjä).toEqual({id: 1})
sisältää Jäsenyys taulukon tai merkkijonon sisällä odota(tiedostot).toContain('lisää-spec.js')
olla määritelty Arvo ei ole määrittelemätön odota(sovellus.LisääNumber).määriteltäväksi()
Heittää Kääritty funktio aiheuttaa virheen odottaa(kutsuLisää).heittämään()
olla kutsuttu Vakoojaa kutsuttiin paikalle ainakin kerran odota(logger.write).toHaveBeenCalled()

Kaksi tapaa pitävät virheet luettavina. Käytä toBe-muuttujaa vain primitiivien ja identtisten viittausten yhteydessä, koska kaksi samansisältöistä oliota eivät koskaan ole ===. Käytä toEqual-muuttujaa rakenteille ja lisää toHaveBeenCalledWith, kun argumenteilla on yhtä paljon merkitystä kuin itse kutsulla.

Asennus, purku ja vakoojat Jasminessa

Oikeat sviitit tarvitsevat jaetun tilan ja tuplatilat hitaille yhteistyökumppaneille. Jasmine toimittaa molemmat ilman lisäpaketteja.

  • ennenJokaista ja jälkeenJokaisen suorita ennen ja jälkeen jokaisen spesifikaation describe-lohkon sisällä, joka on luonnollinen paikka kalusteiden uudelleenjärjestämiselle.
  • ennen kaikkea ja jälkeen kaiken ajetaan kerran koko korttelin ajan, joten varaa ne kalliille töille, kuten yhteyden avaamiselle.
  • spyOn(objekti, 'metodi') korvaa todellisen metodin jollakin tracking double; lisää .and.returnValue() hallitaksesi sen vastausta.
  • jasmine.createSpy('nimi') muodostaa itsenäisen tuplaobjektin takaisinkutsulle, jolla ei ole objektia, johon se voisi liittyä.
  • Asynkroniset tiedot voidaan julistaa asynkroniseksi ja odottaa, se voi palauttaa promise-arvon tai se voi hyväksyä valmis-kutsupyynnön, jota on kutsuttava tasan kerran.

Vakoojat nollautuvat erittelyjen välillä, joten testisarja ei koskaan vuoda epäonnistunutta metodia seuraavaan testiin. Tämä eristäminen saa epäonnistuneen erittelyn osoittamaan yhteen vikaan ketjun sijaan, mikä on sama kurinalaisuus, jota kuvataan kohdassa yksikkötestaus perusasiat.

Jasmine vs. Mokka vs. Jest

Jasmine on yksi kolmesta hallitsevasta viitekehyksestä JavaSkriptien testaus, ja valinta riippuu yleensä siitä, kuinka paljon johdotusta haluat omistaa.

Aspect Jasmiini mokkakahvi on
väittämiä Rakennettu Lisätty, yleensä Chai Rakennettu
Vakoojat ja pilkkaajat Rakennettu Lisätty, yleensä Sinon Rakennettu
Teloitus Sarja Sarja Rinnakkain prosessien välillä
Snapshots Ei Ei Kyllä
Yhteinen koti Angular, pelkkä Node.js Joustavat Node.js-pinot React ja modernit paketoijat

Poimia mokkakahvi kun haluat koota oman väittämä- ja pilkkapinosi, ja on kun rinnakkaisajot ovat tärkeämpiä kuin konfiguroinnin hallinta, kattavuus ja tilannekuvat. Jasmine on edelleen kevyin vaihtoehto, joka saapuu valmiina, minkä vuoksi se on edelleen yleinen automaatiotestaus sviittiä.

UKK

Jasmine lukee spec_dir-etuliitteenä ja sitten kaikki spec_files-luettelossa luetellut glob-objektit, joten vain vastaavat tiedostot suoritetaan. Huutomerkillä alkavat polut jätetään pois, ja apuohjelmat latautuvat kerran ennen specs-objekteja jaettujen asennusten rekisteröimiseksi.

Määritä spesifikaatio asynkroniseksi ja odota kutsua, palauta lupaus tai hyväksy valmis kutsu. asynkroninen opas varoittaa, että done-funktion on käynnistyttävä tasan kerran, muuten epäonnistumiset osuvat väärään spesifikaatioon.

Välitä polku tai globaali malli juoksijan jälkeen, esimerkiksi npx jasmine spec/appSpec.js. –filter-lippu hyväksyy describe-nimeen sovitetun mallin, mikä pitää palautteen nopeana, kun työskentelet yhden paketin parissa.

jasmine-solmu paketti on ylläpitotilassa, sisältää edelleen Jasmine 1.3:n ja listaa Node.js 10:n ja 12:n ajantasaisiksi versioiksi. Virallinen jasmine-paketti tracks-kehys ja tuki sen sijaan Node.js-julkaisuja.

Lisää spec-etuliite x:ään, kuten xit- tai xdescribe-sanoissa, ja Jasmine raportoi sen odottavaksi. Lisää se etuliite f:ään, kuten fit- tai fdescribe-sanoissa, ja vain kohdennetut spec-tiedot suoritetaan. Poista molemmat etuliitteet ennen committia.

Tekoälyavustajat luonnostelevat kuvauslohkoja, yhteensovittajia ja reunatapauksia olemassa olevasta moduulista sekunneissa ja merkitsevät satunnaisesti epäonnistuvat paketit. Jokainen luotu spesifikaatio vaatii edelleen tarkistusta, koska luotettava väite virheellisestä toiminnasta peittää vian.

GitHub Copilot täydentää spesifikaatioiden runkoa kirjoittaessasi ja sen agenttitila voi avata pull-pyynnön, joka korjaa rikkinäiset spesifikaatiot refaktoroinnin jälkeen. Käsittele eroa ehdotuksena ja aja ohjelmistopaketti itse.

Kulmikas still-telineet Jasmine-spesifikaatiot ja kohtitracTor käytti Jasminea oletuskehyksenään ennen sen arkistointia. Tiimit yhdistävät nyt Jasminen Karmaan selaimia varten tai siirtävät selaintyönkulut kohteeseen Cypress ja näytelmäkirjailija.

Tiivistä tämä viesti seuraavasti: