Jasmine (JavaScript tesztelési keretrendszer)
Jasmine | |
Fejlesztő | Pivotal Labs |
Legfrissebb stabil kiadás | 4.0.1 |
Programozási nyelv | JavaScript |
Operációs rendszer | Cross-platform |
Kategória | Unit test |
Licenc | MIT 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]- ↑ jasmine/MIT.LICENSE (angol nyelven). GitHub . (Hozzáférés: 2017. április 25.)
- ↑ Home. jasmine.github.io
- ↑ Background · jasmine/Jasmine Wiki. GitHub
- ↑ GitHub JsUnit Project Page
- ↑ Ragonha, Paulo. Jasmine JavaScript Testing. Packt Publishing (2013). ISBN 978-1782167211
- ↑ Hahn, Evan. JavaScript Testing with Jasmine. O'Reilly Media (2013). ISBN 978-1449356378
- ↑ A simple project. GitHub
- ↑ Karma Jasmine
- ↑ „Jasmine vs. Mocha”, Marco Franssen (Hozzáférés: 2017. február 13.)
- ↑ a b Comparison: Jasmine vs Mocha vs QUnit | StackShare. (Hozzáférés: 2017. február 13.)