Jasmine egy nyílt forráskódú JavaScript teszt keretrendszer. Célja, hogy bármilyen JavaScript-kompatibilis platformon fusson. Könnyen integrálódjon más alkalmazásokhoz és IDE-hez. Valamint könnyen olvasható szintaxisa legyen. Más egységtesztelési keretrendszerek, például a ScrewUnit, JSSpec, JSpec és RSpec erősen befolyásolták.

Története A Pivotal Labs for Jasmine fejlesztői korábban egy hasonló egységtesztelési keretrendszert fejlesztettek ki JsUnit néven. A Jasmine aktív fejlesztése előtt.GitHub JsUnit Project Page

Jellemzők Támogatja az aszinkron tesztelést. A „spies”-t használja a kettősteszt (test doubles) végrehajtásához. Támogatja az front-end kód tesztelését a Jasmine-jQuery nevű front-end kiterjesztésén keresztül.

Használata A Jasmine célja, hogy könnyen olvasható legyen. Egy egyszerű hello world teszt úgy néz ki, mint az alábbi kód, ahol a description() egy teszt sorozatot ír le. Az it() pedig egy egyedi teszt specifikáció. Az "it()" név a viselkedésvezérelt fejlesztés gondolatát követi, és a teszt név első szavaként szolgál. Melynek egy teljes mondatnak kell lennie. A használata az RSpec szintaxisához hasonló.

Az alábbi kód ezt a funkciót tesztelifunction helloWorld() { return 'Hello world!'; }és ellenőrzi, hogy a kimenete valóban a "Hello world!" .describe('Hello world', function() { it('says hello', function() { expect(helloWorld()).toEqual('Hello world!'); }); });A Jasmine beépített egyeztető (matcher) függvények gazdag készletét kínálja. A fenti példában a toEqual ellenőrzi a helloWorld() függvényből visszaadott értéket és a 'Hello world!' szöveget. Ez megegyezik más tesztelési keretrendszerekben használt állításokkal (assertions). A Jasmine egyeztető függvények logikai értéket adnak vissza: igaz, ha a várt eredmény egyezik (ez jelzi, hogy a teszt sikeres volt), vagy hamis, ha a várt eredmény nem egyezik. Egy jó gyakorlat, egyetlen elvárt eredmény megfogalmazása az egyéni it() teszt specifikációban.

További beépített egyeztető (matcher) függvények: toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. A toBe identitásegyeztető ellenőrzi, hogy a két dolog ugyanaz az az objektum-e. A toBeTruthy, toBeFalsy feltételegyezők értékelik, hogy valami igaz vagy hamis. A toBeDefined, toBeUndefined ellenőrzi, hogy valami definiált-e vagy nem. Ahogy a neve is sugallja, a toBeNull ellenőrzi, hogy valami nulla-e. A toBeNaN pedig azt, hogy valami nem szám ( NaN ). A toBeCloseTo precíziós egyeztető két paramétert fogad el, és ellenőrzi, hogy egy szám közel van-e az első paraméterhez, adott tizedesjegy pontossággal, amint azt a második paraméter jelzi. A toContain segítségével ellenőrizhető, hogy egy elem, objektum vagy alkarakterlánc szerepel-e egy tömbben, listában vagy karakterláncban.

A speciális beépített egyeztető(matcher) toThrow segítségével ellenőrizhető, hogy kivétel történt-e. Az alábbi kód ellenőrzi, hogy a rendszer „Valamilyen kivételt” dobott-e fel.describe('Expect to throw an exception', function() { it('throws some exception', function() { expect( function(){ throw('Some exception'); }).toThrow('Some exception'); }); });A Jasmine számos más funkcióval is rendelkezik, például egyedi matcher-ekkel, spies-okkal és aszinkron specifikációk támogatásával.

Jasmine teszt futtatók A Jasmine beépített teszt futtatóval rendelkezik. A Jasmine tesztek böngésző teszteket futtathatnak egy egyszerű SpecRunner.html fájl hozzáadásával. Vagy parancssori teszt futtatóként különböző nyelveket támogatnak, például Nodejs, Python, Ruby. Vagy (régi módon) a Karma használatával, amely egy egyszerű JavaScript teszt futtató eszköz.

Jasmine és Mocha összehasonlítása A Mocha egy másik népszerű JavaScript tesztelési keretrendszer. A Jasmin és a Mocha összehasonlítását az alábbi táblázat tartalmazza. Jasmine Mocha A Jázmin kettős teszt spies-okkal rendelkezik. A Mocha nem tartalmaz kettős teszt könyvtárat, és általában olyan külső könyvtárat használ, mint a Sinon. A Jasmine parancssori segédprogrammal rendelkezik a tesztek futtatásához. A Mocha is rendelkezik egy parancssori segédprogrammal a tesztek futtatásához. Jasmine-ba alapból be vannak építve az állítások (assertions) A Mocha nem rendelkezik állítás könyvtárral (assertions library), és a Chai-t használja az állításokhoz (assertions).

Előnyök A Jasmine célja, hogy független legyen a böngészőtől, keretrendszertől, platformtól és nyelvtől. A viselkedésvezérelt fejlesztés mellett a Jasmine a tesztvezérelt fejlesztést is támogatja.

Jegyzetek

További információk Jasmine honlapja Jasmine a GitHubon JSSpec JSpec Screw.Unit

Kapcsolódó szócikkek

Az egységtesztelési keretrendszerek listája Mocha (JavaScript-keretrendszer)

JavaScript könyvtár

Kategória:Egységteszt-keretrendszerek