- procesarea evenimentelor pe pagină;
- formarea de conținut HTML;
- lucrați cu AJAX.
Folosind împreună Qunit și Sinon.JS, puteți scrie teste unitare pentru oricare dintre aceste aplicații.
Începeți rapid
Se presupune că API-ul de testare este stocată într-un fișier separat chat.js, unitatea de cod de testare va scrie un fișier chat.tests.js separat, și pentru a rula testele vor crea o pagină tests.html, care prescrie link-uri pentru a testa API, codul de testare și necesare bibliotecă:
Pentru a rula testele, trebuie să deschideți pagina tests.html în browser, aici vedem următorul rezultat:
Opțiunea "Verificați globale" verifică variabilele globale în API și teste, ceea ce este foarte util pentru prevenirea conflictelor.
Dacă opțiunea „Nu try-catch“, testele vor fi efectuate înainte de prima prin excepție, nu ar permite scăpa de întregul set de teste, dar va oferi acces la informații excepție de nivel scăzut, ceea ce este util pentru depanare în browsere mai vechi.
Pentru a verifica declarațiile în teste unitare, QUnit oferă mai multe funcții. Rețineți că, spre deosebire de celelalte cadre xUnit-valoarea actuală este indicată ca primul argument, cum era de așteptat - un al doilea (cu excepția funcției OK (), care verifică primul argument). Ultimul argument poate fi un șir cu o explicație a exact ceea ce este verificat de declarație.
- ok () - se așteaptă ca primul argument să fie adevărat
- equal () / notEqual () - pentru comparare, operatorul == este folosit
- deepEqual () / notDeepEqual () - pentru comparare, operatorul === este folosit
- strictEqual () / notStrictEqual () - operatorul este folosit pentru comparare (===
- aruncă () - se așteaptă ca o excepție să fie aruncată.
Un exemplu simplu
Pentru a crea un test de unitate, Qunit oferă un test de funcții (), primul argument este un șir cu numele testului, al doilea este o funcție care conține codul de testare. În acest exemplu, se verifică faptul că apelarea unei metode din API-ul testat va readuce obiectul structurii așteptate.
Exemplu este mai complicat cu aspectul
Specială div # qunit-prindere util pentru testarea layout-ul generat ca QUnit curăță după fiecare încercare de a furniza Atomicitate.
Module, configurație
QUnit pot combina teste în module, este convenabil pentru a grupa teste funcționale similare. Modulul poate avea variabile vizibile în fiecare test și configurare () și teardown (), care se efectuează înainte și după fiecare încercare, respectiv, și care pot fi inițializate și curățați datele comune. Modulul începe cu o funcție de modul (), care poate merge după numărul n-NOE testului funcției (), toate n-test va aparține acestui modul. Modulul se va termina la pornirea următorului modul.
În test folosim variabilele inițializate în setup ():
Ce dă Sinon.JS
Cel mai simplu ambalaj, efectuează urmărirea apelului. Obiectul original nu se schimbă și este gestionat. Este convenabil pentru a verifica care funcție cu care parametri a fost apelat. Unii membri ai interfeței:
- numitOnce () - returnează true dacă funcția a fost apelată exact o dată
- CallCount - funcția de contor apel
- getCall (m) .args [n] - returnează al optulea argument al apelului m
- getCall (m) .calledWith (args) - verifică dacă a apărut apelul m cu argumentele specificate.
Extinde interfața spion, în timp ce obiectul original este înlocuit și nu este apelat. Puteți personaliza comportamentul obiectului emulat când acesta este apelat, de exemplu, valoarea returnată.
Un exemplu de utilizare a spionului și a stubului:
Emularea serverului
Sinon.JS vă permite să emulați răspunsul serverului atunci când solicită ajax:
Moki - dezvoltarea ulterioară a ideii de stubs, ele vă permit să reglați comportamentul așteptat al obiectului și apoi să verificați dacă lucrarea cu obiectul emulat a trecut corect.
Integrarea cu furnica
Rulați testele unitare în timpul pregătirii automate (și a opri adunarea în cazul căderii testului) este posibilă prin intermediul PhantomJS (Acest lucru se execută în consola WebKit) și un alergător de construcții. După instalare, de a crea o variabilă de mediu PhantomJS PHANTOMJS_HOME, arătând spre PhantomJS dosar.
Mai jos este un exemplu de ant-proiect care efectuează teste QUnit în timpul construcției: