Egységek tesztelése javascriptben

  • eseményfeldolgozás az oldalon;
  • a HTML tartalmak kialakulása;
  • dolgozni az AJAX-vel.

A Qunit és a Sinon.JS együttes használatával egységnyi teszteket írhatunk ezekre az alkalmazásokra.

Gyorsindítás

Feltételezzük, hogy a vizsgálat API tárolják külön fájlban chat.js, egység tesztelése kód levelet külön chat.tests.js fájlt, majd futtatni a teszteket, hozzon létre egy oldalt tests.html, amely előírja, linkeket, hogy teszteljék API teszt kód és a szükséges könyvtár:

A tesztek futtatásához meg kell nyitnia a tests.html oldalt a böngészőben, itt láthatjuk a következő eredményt:

A "Check for globals" opció ellenőrzi az API és tesztek globális változóit, ami nagyon hasznos a konfliktusok megelőzésére.

Ha a „No try-catch”, a vizsgálatokat kell elvégezni, mielőtt az első a kivétel, nem engedte szabadulni a teljes vizsgálatsorozat, de ad hozzáférést az alacsony szintű kivétel információt, ami hasznos lehet a hibakeresés a régebbi böngészők.

A kimutatások ellenőrzése az egységvizsgálatokban a QUnit számos funkciót tartalmaz. Megjegyzendő, hogy ellentétben a többi keretek xUnit-áram értéke jelzi, mint az első érv, mint az várható volt - a második (kivéve az OK () függvény, amely ellenőrzi az első érv). Az utolsó argumentum lehet egy húr, amely magyarázattal szolgál arról, hogy pontosan mi is igazolja az utasítás.

  • ok () - elvárja, hogy az első argumentum igaz legyen
  • equal () / notEqual () - összehasonlítás céljából a == operátort használjuk
  • deepEqual () / notDeepEqual () - összehasonlításhoz használja a === operátort
  • strictEqual () / notStrictEqual () - az operátor összehasonlításra szolgál (===
  • throws () - elvárja, hogy kivételt kapjanak.

Egyszerű példa

A QUnit egységteszt létrehozása egy függvénytesztet () tartalmaz, az első argumentum egy tesztnév nevű string, a második a tesztkódot tartalmazó függvény. Ebben a példában meg van győződve arról, hogy a tesztelt API-ból történő hívás visszaadja a várt struktúra objektumát.

A példa bonyolultabb az elrendezéssel

Különleges div # qunit-lámpatest tesztelésére alkalmas az előállított elrendezését QUnit megtisztítja minden vizsgálat után, hogy atomos.

Modulok, konfiguráció

A Qunit lehetővé teszi a tesztek modulokká történő kombinálását, ezért alkalmas a hasonló funkcionalitású tesztek csoportosítására. A modul képes változó látható mindegyik vizsgálati és beállítási () és tearDown (), amelyek előtt és minden egyes vizsgálat után, sorrendben, és amely lehet inicializálni és tisztítsa a közös adatokat. A modul a module () függvénnyel kezdődik, amely után az n-edik számú teszt () függvény áttelepül, minden n teszt tartozik ehhez a modulhoz. A modul a következő modul indításakor befejeződik.

A tesztben a setup () -ben inicializált változókat használjuk:

Mi ad a Sinon.JS-nek?

A legegyszerűbb csomagológép elvégzi a hívás nyomon követését. Az eredeti objektum nem változik, és kezeli. Kényelmesen ellenőrizhető, hogy melyik függvényt hívták meg. Egyes kezelőfelület tagjai:

  • namedOnce () - true értéket ad vissza, ha a függvényt pontosan egyszer hívták
  • callCount - hívásszámláló funkció
  • getCall (m) .args [n] - visszaadja az m-es hívás n-edik argumentumait
  • getCall (m) .calledWith (args) - ellenőrizze, hogy az m-es hívás a megadott argumentumokkal történt-e.

Kiterjeszti az interfész kémt, míg az eredeti objektumot kicserélik és nem hívják. Testreszabhatja az emulált objektum viselkedését, amikor hívják, például a visszatérési értéket.

Példa a kém és a csonk használatára:

A kiszolgáló emulálása

A Sinon.JS lehetővé teszi a kiszolgáló válaszadását, amikor ajax-kérések:

Moki - a csonkok ötletének továbbfejlesztése, lehetővé teszik az objektum várható viselkedésének finomhangolását, majd ellenőrizni, hogy az emulált objektummal végzett munka megfelelően haladt-e.

Integráció ant

Fuss a unit tesztek során az automatizált build (és megáll a szerelvény esetén őszén a teszt) révén lehetőség van PhantomJS (Ez fut WebKit konzol) és egy speciális futó. A PhantomJS telepítése után hozzon létre egy PHANTOMJS_HOME környezeti változót, amely a PhantomJS mappára mutat.

Az alábbiakban egy olyan hangya-projekt példája látható, amely elvégzi a QUnit teszteket a build során:

Kapcsolódó cikkek