Jasmine (JavaScript tesztelési keretrendszer)

A Wikipédiából, a szabad enciklopédiából

 

Jasmine

FejlesztőPivotal Labs
Legfrissebb stabil kiadás4.0.1
Programozási nyelvJavaScript
Operációs rendszerCross-platform
KategóriaUnit test
LicencMIT License[1]
A Jasmine weboldala

Jasmine egy nyílt forráskódú JavaScript teszt keretrendszer. [2] 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. [3]

Története[szerkesztés]

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. [4]

Jellemzők[szerkesztés]

  • Támogatja az aszinkron tesztelést. [5]
  • 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[szerkesztés]

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 teszteli

function 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. [6] 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 alkakarterlá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[szerkesztés]

A Jasmine beépített teszt futtatóval rendelkezik. A Jasmine tesztek böngésző teszteket futtathatnak egy egyszerű SpecRunner.html [7] 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, [8] amely egy egyszerű JavaScript teszt futtató eszköz.

Jasmine és Mocha összehasonlítása [9][szerkesztés]

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[szerkesztés]

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

Jegyzetek[szerkesztés]

  1. jasmine/MIT.LICENSE (angol nyelven). GitHub . (Hozzáférés: 2017. április 25.)
  2. Home. jasmine.github.io
  3. Background · jasmine/Jasmine Wiki. GitHub
  4. GitHub JsUnit Project Page
  5. Ragonha, Paulo. Jasmine JavaScript Testing. Packt Publishing (2013). ISBN 978-1782167211 
  6. Hahn, Evan. JavaScript Testing with Jasmine. O'Reilly Media (2013). ISBN 978-1449356378 
  7. A simple project. GitHub
  8. Karma Jasmine
  9. Jasmine vs. Mocha”, Marco Franssen (Hozzáférés: 2017. február 13.) 
  10. a b Comparison: Jasmine vs Mocha vs QUnit | StackShare. (Hozzáférés: 2017. február 13.)

További információk[szerkesztés]

Kapcsolódó szócikkek[szerkesztés]