A JavaScript világa rengeteg lehetőséget kínál … nos, nagyjából mindenre. Ma a tesztelési eszközökre koncentrálunk, és arra a kérdésre válaszolunk, hogy “Melyik a legjobb JavaScript keretrendszer?”

Az öt legnépszerűbb JavaScript tesztelési keretrendszert járjuk végig, és a cikk végére megválasztjuk azt, amelyik szerintünk a legjobb. Kezdjük.

Mi a tesztelési keretrendszerek?

Mielőtt belemerülnénk a keretrendszerek listájába, fontos megérteni, mi is az a tesztelési keretrendszer.

Egyszerűen fogalmazva, a tesztelési keretrendszer egy olyan eszköz – vagy eszközkészlet -, amely segít az egységtesztelés végrehajtásában. Egy tesztelési keretrendszernek legalább

  • Szabályokat vagy konvenciókat kell biztosítania a tesztesetek írásához és tesztcsomagokba szervezéséhez.
  • A tesztek automatikus végrehajtását és önminősítését szolgáló eszközöket.
  • A tesztek megjelenített és formázott eredményei.

Öt JavaScript tesztelési keretrendszer, amit érdemes megnézni

Mostanra már biztosan tisztában vagy azzal, hogy mik azok a tesztelési keretrendszerek és miért van rájuk szükségünk. Miután ezzel végeztünk, ideje nekilátni az eszközök listájának, kezdve a Mochával.

Mocha

A Mocha, néha MochaJS-nek is nevezik, egy tesztelési keretrendszer, amely a Node.js-ben és a böngészőben is fut. Még 2011-ben jelent meg, és azóta az egyik legnépszerűbb tesztelő keretrendszer a JavaScript világában. A State of JavaScript jelentés szerint azonban a Mocha népszerűsége az utóbbi években csökkenő tendenciát mutat, bár még mindig vitathatatlanul a leghasználtabb és legismertebb eszköz.

Ez a keretrendszer a tesztek sorozatos futtatásával teszi egyszerűvé az aszinkron tesztelést. Ez lehetővé teszi a pontos jelentéstételt és egyúttal az el nem fogott kivételek hozzárendelését a megfelelő tesztesetekhez. A Mocha keretrendszer rendkívül rugalmasan konfigurálható. Lehetővé teszi, hogy olyan könyvtárakkal párosítsa, amelyekre különösen szüksége van az olyan funkcionalitásokhoz, mint az assertions, a mocking és így tovább.

Az ilyen rugalmasság hátránya, hogy a Mocha kezdeti beállítása több munkát igényel. Továbbá, míg más keretrendszerek már rendelkeznek assertions és mocking funkcionalitásokkal, a Mocha további eszközöket igényel ehhez.

Hivatalos oldal: mochajs.org
Tárhely: github.com/mochajs/mocha

Puppeteer

A Puppeteer egy Node.js könyvtár, amely lehetővé teszi a felhasználók számára egy fej nélküli Chrome vagy Chromium böngésző vezérlését. Így lehetőség nyílik olyan tesztek automatizálására, amelyeket jellemzően manuálisan, egy hagyományos böngészővel végeznénk el. A projekt oldalán felsorol néhány példát az elvégezhető tesztekre:

  • Képernyőképek és PDF-ek készítése az oldalakról.
  • Egy SPA (egyoldalas alkalmazás) feltérképezése és előre renderelt tartalom (azaz “SSR” ) generálása.
  • Elképzelések benyújtásának automatizálása, UI-tesztelés, billentyűzetbevitel stb.
  • Naprakész, automatizált tesztelési környezet létrehozása. Futtassa tesztjeit közvetlenül a Chrome legújabb verziójában, a legújabb JavaScript és böngészőfunkciók használatával.
  • Fogja meg webhelye idővonalának nyomvonalát a teljesítményproblémák diagnosztizálásához.
  • Tesztelje a Chrome-bővítményeket.
  • A Testim kiadta a Puppeteer ingyenes felvevőjét. Nézze meg, és használja, amilyen gyakran csak akarja.

Hivatalos oldal: developers.google.com/web/tools/puppeteer
Tárhely: github.com/puppeteer/puppeteer

Jasmine

A Jasmine egy JavaScript BDD (behavior-driven development) tesztelési keretrendszer.

Ez a keretrendszer már nagyjából mindent tartalmaz, amire szüksége van a tesztelés megkezdéséhez. Beépített állításokkal és kémekkel ellátott tesztpárosításokkal rendelkezik, ellentétben például a Mochával, amelyhez harmadik féltől származó eszközöket kell telepítenie ezekhez a funkciókhoz.

A Jasmine azonban rugalmas is, és zökkenőmentesen integrálható számos további tesztelési eszközzel. Könnyedén használhatja a Karmát tesztfutóként, vagy alkalmazhatja a Sinon.JS-t a mocking igényeihez.

Hivatalos oldal: jasmine.github.io/
Tárhely: github.com/jasmine/jasmine

QUnit

AQUnit eredetileg a jQuery programkönyvtár része volt. John Resig hozta létre a jQuery, a jQuery UI és a jQuery Mobile tesztelésére. 2008-ban a QUnit-et kivonták a jQuery kódbázisából, és önálló keretrendszerként adták ki, de a működéséhez továbbra is a jQuery-re lenne szükség. Ezt 2009-ben egy átírással javították, így a QUnit végre függetlenné vált a jQuery-től.

A QUnit annak ellenére, hogy eredetileg a jQuery-t célozta meg, jelenleg egy általános keretrendszer, amely bármilyen JavaScript kód tesztelésére alkalmas, kliens- és szerveroldali környezeteket egyaránt támogat.

A QUnitre úgy is gondolhatunk, mint a JavaScript képviselőjére az xUnit egységtesztelő keretrendszerek családjában. Gyors és egyszerű telepítéssel rendelkezik. Továbbá, mivel már legalább 12 éve létezik, jól támogatott eszköz.

Hivatalos oldal: qunitjs.com
Tárhely: github.com/qunitjs/qunit

Jest

A Jest egy JavaScript tesztelési keretrendszer, amely az egyszerűségre összpontosít. A Facebook által kiadott Jest célja, hogy azonnal, konfiguráció nélkül működjön.

Ha vetsz egy pillantást a Jest “getting started” oldalára, látni fogod, hogy néhány perc alatt telepítheted, megírhatod az első tesztedet és futtathatod is, bonyolult beállítások vagy további telepítések nélkül. A Jest másik előnye a lenyűgöző teljesítménye.

A Jestet elsősorban React alkalmazások tesztelésére használják, de ez nem jelenti azt, hogy csak a keretrendszerrel írt alkalmazások tesztelésére kell használni. Ellenkezőleg: Node, Angular és Vue alkalmazások tesztelésére is használhatja, hogy csak néhányat említsünk.

Hivatalos oldal: jestjs.io/
Tárhely: github.com/facebook/jest

Figyelemre méltó hiányzók

Elképzelhető, hogy csodálkozik, miért nem került fel néhány híres JavaScript tesztelő eszköz a listánkra. Talán úgy érzed, hogy többek között az olyan eszközök, mint a Karma, a Sinon és a Chai elég népszerűek ahhoz, hogy a listára kerüljenek. Miért nem vettük fel őket?

Egyszerűen fogalmazva, a lehető legtömörebben akartuk tartani a listát. Ennek érdekében úgy döntöttünk, hogy nem veszünk fel a listára olyan tesztelési eszközöket, amelyek szigorúan véve nem keretrendszerek. Ez az oka tehát annak, hogy egy olyan szuper népszerű eszköz, mint a Karma nem került fel: ez egy tesztfutó, nem pedig egy keretrendszer. Ugyanez az érvelés vonatkozik a Sinonra (egy mocking eszköz) és a Chai-ra (egy assertion könyvtár).

Azzal érvelhet, hogy a Puppeteer nem igazán illik a listára, és bizonyos mértékig egyet is értek vele. Vagyis az összes többi eszköz olyan keretrendszer, amely inkább alkalmas unit testing stílusú tesztek elvégzésére, míg a Puppeteer inkább egy böngésző automatizálási eszköz. Abban az értelemben azonban még mindig egy tesztelési keretrendszer, hogy lehetővé teszi automatizált tesztek tervezését, amelyek később emberi beavatkozás nélkül futtathatók.

Verdict: Melyik a legjobb JavaScript tesztelési keretrendszer?

Öt JavaScript tesztelési keretrendszert mutattunk be. Most itt az ideje, hogy beváltsuk a poszt címében tett ígéretet, és kiválasszuk a legjobbat. Ehhez négy szempont szerint fogjuk megítélni a keretrendszereket: költség, telepítés, könnyű telepíthetőség és tanulási görbe.

A keretrendszerek értékelése

Költség

Az első kritériumot minden bizonnyal a legkönnyebb értékelni. Az itt tárgyalt keretrendszerek mindegyike nyílt forráskódú projekt, tehát ingyenesen letölthető és használható (mint a sör). Tehát itt nincs egyértelmű győztesünk. Lépjünk tovább.

Telepítés

A fenti eszközök telepítése meglehetősen egyszerű. Hiszen mindegyik telepíthető az npm (vagy alternatívaként a Yarn) segítségével.) Néhány eszköz azonban további telepítési lehetőségeket kínál.

Az npm és a Yarn mellett például a QUnit önálló letöltésként is telepíthető. Ehhez azonban tárolni és kezelni kellene ezt az eszközt. Ehelyett használhatja a jQuery CDN-ben elhelyezett verziót. A Jasmine szintén kínál egy önálló verziót, amely nem függ a Node-tól, és lehetővé teszi a specifikációk futtatását a böngésző segítségével.

Szóval, van itt egy győztesünk? Szerintünk igen. Ha csak a telepítés egyszerűsége alapján választanánk, akkor egy másik döntetlen lenne. De mint láttuk, a QUnit és a Jasmine is több lehetőséget kínál, mivel önálló könyvtárként is használhatjuk őket. Hasznos ez a többlet rugalmasság? Lehet, hogy ez nem mindegy, de számunkra itt a QUnit és a Jasmine a győztesek.

Győztesek: QUnit és Jasmine

Egyszerű telepítés

Most nézzük a könnyű telepítést. Amikor a kezdeti beállításról van szó, itt egyértelmű győztesünk van: Jest. A keretrendszer nulla konfiguráció használatát ígéri, és ezt az ígéretet be is tartja. Persze, lehetővé teszi az opcionális konfigurációkat, de elképesztő érzés egy tesztelési keretrendszert telepíteni, és körülbelül két perc alatt egy valódi tesztet futtatni, mindenféle konfiguráció vagy további eszközök telepítése nélkül.

Győztes: Jest

Tanulási görbe

Végre a tanulási görbe. Itt is a Jestet kell választanunk. Mivel széles API-val rendelkezik, és nem igényel annyi harmadik féltől származó eszközt, mint a többi keretrendszer, a Jest elkerülhetetlenül kevésbé meredek tanulási görbét mutat.

Győztes: Jest

Itt a győztes

Azt követően, hogy öt JavaScript tesztelési keretrendszerrel foglalkoztunk, majd négy kritérium alapján elemeztük őket, itt az ideje, hogy győztest válasszunk.

Mivel tehát az általunk használt négy kritérium közül kettőnél ez volt a győztes, a Jestet fogjuk győztesnek választani. Ez nem jelenti azt, hogy ne próbálja ki a többi eszközt. Ellenkezőleg: kísérletezz és gyakorolj, amennyit csak tudsz, hiszen ez a legjobb módja a tanulásnak.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.