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: