jasmine framework tutorial including jasmine jquery with examples
Acest articol acoperă cadrul de testare a iasomiei și structurile sale. De asemenea, aflați despre pachetul Jasmine-Jquery care extinde Jasmine pentru a testa aplicațiile Jquery:
Am aflat totul despre Karma în tutorialul nostru anterior din această serie.
În acest tutorial, vom învăța cum să folosim Jasmine pentru a scrie teste pentru o aplicație web JavaScript și, de asemenea, vom afla cum să folosim pachetul bazat pe noduri Jasmine-Jquery pentru a testa aplicația web Jquery.
Aici ne vom concentra în principal pe construcțiile de bază Jasmine pentru testele de scriere.
ce este testarea de regresie în qa
Să începem!!
Ce veți învăța:
Ce sunt cadrele de testare?
Cadrele de testare sunt suite de programe sau pachete care facilitează testarea unui alt program pentru a asigura calitatea acestuia. Fiecare platformă de programare are propriul cadru de testare, așa cum trebuie să fi învățat din tutorialul nostru anterior.
Există diferite seturi de teste care pot fi efectuate pe orice sistem software. Exemple dintre astfel de teste includ testarea unitară, testarea cap la cap (e2e) etc. Verificați Aici pentru mai multe detalii.
Exemple dintre cadrele de testare pentru aplicațiile JavaScript includ Mocha, Jasmine, intern, jest, Qunit etc.
Introducere în Jasmine Framework
Există diferite abordări de dezvoltare disponibile în scenariul actual. Dintre acestea, două dintre cele mai populare abordări de dezvoltare includ Test-Driven Development (TDD) și Behavior Driven Development (BDD).
Test-Driven Development este o abordare de dezvoltare în care scriem testele mai întâi și apoi le rulăm. Fiecare test eșuează la prima sa execuție, deoarece funcțiile pe care le folosește nu au fost scrise încă.
Scriem apoi funcțiile și reluăm testele. Aici, unele dintre teste eșuează, iar celelalte trec. Continuăm refacerea codului pentru a trece toate testele.
Dezvoltarea condusă de comportament urmează, de asemenea, aceeași abordare. Singura diferență este că BDD este scris pentru a satisface proprietarii software-ului (orientat spre client / afaceri), adică pentru a îndeplini caracteristicile software-ului cu cerințele afacerii sau cu comportamentul așteptat.
În timp ce TDD este scris pentru a satisface dezvoltatorii software-ului, astfel încât să fie sigur că funcțiile software utilizate în construirea caracteristicilor produc rezultate exacte, stabile și fiabile.
Vedea Aici pentru a afla mai multe despre TDD vs BDD.
Jasmine este un cadru de testare JavaScript care se bazează pe comportament, ceea ce face testele de scriere ușoare și nu depinde de niciun alt cadru.
Există două moduri de a folosi Jasmine pentru a vă scrie testele. O modalitate este de a utiliza versiunea autonomă care vine cu specRunner.html (care afișează rezultatele testelor într-un browser). Cealaltă modalitate este să instalați pur și simplu Jasmine, să vă scrieți testele și să îl rulați cu un test-runner precum Karma pentru a obține rezultatele afișate în fereastra consolei.
Ne-am uita la ambele moduri de utilizare a Jasmine în viitorul nostru tutorial.
Constructii de baza de iasomie pentru teste de scriere
Mai jos sunt enumerate diferitele constructe ale Jasmine pentru testele de scriere.
Să vedem!!
# 1) descrie: Această construcție este utilizată pentru a scrie o suită de testare. O suită de teste este o colecție de teste multiple. „Descrie” este o funcție în sine care ia doi parametri: Numele suitei și o funcție .
Parametrul funcției conține o colecție de teste grupate sub suita de teste.
# 2) acesta: Această construcție este utilizată pentru a scrie o specificație de testare. O specificație de testare este un set de construcții care testează o așteptare specială sau cea mai mică pentru un sistem.
Ca și descrierea constructului, ia și doi parametri: Numele testului și funcția care conține afirmațiile care evaluează dacă așteptarea este îndeplinită sau nu.
# 3) așteptați : Acest construct ajută la testarea dacă așteptările din sistemul software sunt îndeplinite sau nu.
Este nevoie de un parametru numit real (care este rezultatul pe care îl returnează sistemul software) și apoi este înlănțuit cu un alt construct numit potrivitor (rezultatul scontat).
# 4) Meciuri : Aceasta este o colecție de constructe la care construcția așteptată este înlănțuită. Determină dacă așteptarea este îndeplinită sau nu.
Aceste construcții iau valoarea așteptată a celui mai apropiat test efectuat și o potrivesc cu valoarea reală obținută la executarea testului. Clic Aici pentru o listă completă a constructelor de potrivire Jasmine
# 5) înainte de fiecare : Aceasta este o construcție globală, furnizată de Jasmine pentru a vă ajuta să vă mențineți testele USCATE (nu vă repetați). Această construcție este utilizată în mod normal în parametrul funcțional al constructului descris.
Orice cod din interior rulează o dată înainte de a fi rulate specificațiile de sub suite. Prin urmare, orice cod pe care doriți să îl executați mai întâi înainte ca toate specificațiile din suită să fie plasat aici.
# 6) după fiecare: Această construcție este aceeași ca și beforeEach, iar diferența este că codul pe care îl conține este rulat după fiecare cod odată executat constructul descris.
# 7) aceasta : Această construcție este un obiect gol care poate fi folosit pentru a partaja valori între „beforeEach”, „afterEach” și „it” în orice suite de testare. Fiecare suită de testare are propriul obiect și obiectul este resetat la gol înainte de executarea suitelor de testare.
# 8) descrie x : Această construcție este utilizată pentru a dezactiva suitele software. Pur și simplu spune testerului să sară peste suita de testare și, prin urmare, rezultatul său nu este afișat și luat în considerare.
# 9) lovit : Această construcție este utilizată pentru a indica o specificație dintr-o suită ca specificație în așteptare. O specificație în așteptare este o specificație care nu va rula, dar va avea numele lor afișate în rezultatul testului ca fiind în așteptare.
De asemenea, dacă în orice specificație se apelează funcția în așteptare, atunci specificația este marcată ca o specificație în așteptare. Orice specificație declarată fără un corp de funcție este, de asemenea, etichetată ca fiind în așteptare.
# 10) spyOn : Această construcție este utilizată pentru a crea un spion Jasmine. Spionii sunt batjocuri. Mock-urile sunt obiecte false create pentru a reprezenta sau imita obiectul real. Sunt necesare batjocuri pentru a preveni costul general al creării obiectului real pe care îl reprezintă.
Esența testării unitare a unui cod este de a vedea cum se comportă o funcție în mai multe condiții, independente de celelalte unități conectate sau vor fi conectate la acesta.
Astfel, efectuăm testarea unităților front-end pentru a vedea cum o unitate a front-end-ului produsului nostru software se va comporta independent de celelalte unități front-end care vor fi conectate sau sunt conectate la acesta.
În timpul acestui test, apelăm la diverse argumente și funcții care pot depinde de alte funcții și obiecte, cum ar fi conexiunile de rețea, sursele de date și fișierele.
Întrebări și răspunsuri pentru interviuri pentru dezvoltatori sq sql
Pentru a satisface aceste dependențe (astfel încât să putem efectua testarea unității front-end), este necesar să punem la dispoziție resursele necesare. Prin urmare, adoptăm batjocuri pentru a imita obiectele din lumea reală și pentru a evita costurile generale ale creării lor.
Rețineți că la un nivel simplu, spyOn este utilizat pentru a testa dacă o funcție dependentă este de fapt apelată, iar această funcție dependentă poate fi doar o funcție simplă care este definită pe obiectul pe care îl spionăm.
Funcția spyOn are doi parametri: obiectul care este spionat și funcția de dependență pe care o conține, care este verificată pentru a ne asigura că funcția noastră îl numește.
Spionii există în suita sau specificațiile în care este definit. După ce suita sau specificațiile sunt executate, spionul încetează să mai existe.
# 11) createSpy: Această construcție are același scop ca spyOn, dar diferența este că această funcție face posibilă înlocuirea funcției dependente cu una falsă pentru testare.
De ce trebuie să fac asta? Acest lucru este util atunci când dependența inițială este, de asemenea, dependentă de celelalte resurse care nu sunt disponibile în contextul testului.
Această funcție este accesată folosind obiectul Jasmine cu un punct, adică Jasmine.createSpy (parametri). Este nevoie de un singur parametru, care este un șir care reprezintă numele dependenței pentru care creăm falsul.
Rețineți că după crearea unui spion, spionul la primul apel revine nedefinit, deoarece primul apel se presupune că este instruirea acestuia. Apoi, după apeluri ulterioare, funcția returnează valoarea reală. Vedeți mai multe detalii pe măsură ce le explorăm mai jos.
Jasmine Test Caracteristică dublă funcție
Construcțiile spyOn și createSpy fac posibilă crearea de simulări (pentru dependență). Acesta nu este altceva decât testarea a două funcții într-un singur test, deci declarația „testare funcție dublă”.
Celălalt cuvânt care poate fi folosit pentru a se referi la batjocuri este „cioturi”.
Matchers spion: Există mai multe potriviri care răspund nevoii de interacțiune cu spionii. Ei includ: „ToHaveBeenCalled” și „toHaveBeenCalledWith” .
-
- toHaveBeenCalled : Acesta este utilizat într-o specificație pentru a determina dacă a fost apelată dependența spionată.
- toHaveBeenCalledWith : Aceasta este utilizată într-o specificație pentru a determina faptul că dependența spionată a fost apelată cu un anumit set de parametri.
Vizita Aici pentru o schiță detaliată a tuturor constructelor Jasmine.
angularjs intervievează întrebări și răspunsuri pentru cei cu experiență
Două moduri de a folosi Jasmine
Există două moduri de a scrie teste de iasomie. Una este utilizarea Jasmine ca distribuție independentă prin specRunner, iar cealaltă este utilizarea Jasmine cu test runner.
Să ne uităm mai întâi la efectuarea testelor Jasmine prin specRunner.
Cum se utilizează distribuția autonomă Jasmine?
Clic Aici , apoi descărcați distribuția independentă făcând clic pe Iasomie-independentă .
Dezarhivați fișierul în dosarul proiectului. Veți descoperi că adaugă aceste directoare în directorul proiectului: lib, src și spec; și adaugă, de asemenea, aceste fișiere: specRunner.html și MIT.LICENSE.
Directorul lib conține biblioteca Jasmine care execută testele conținute în fișierele de test adăugate în fișierul specRunner.html. Fișierul specRunner.html vă permite să rulați testul și să vizualizați rezultatul pe browser într-un format de pagină web, mai degrabă decât în fereastra consolei.
Directorul src conține codurile sursă front-end, iar directorul spec conține fișierele de test scrise folosind suitele de testare Jasmine. În mod implicit, puteți vedea câteva suite de testare și fișiere în directoare, dar nu le vom folosi, ne-am scrie propriile teste în tutorialele noastre ulterioare.
Utilizarea Jasmine cu un tester
Acesta este al doilea mod de utilizare a Jasmine, în care configurați un test-runner precum Karma și îl hrăniți cu fișierul sursă și fișierul cu specificațiile testului pentru a rula testele.
Apoi, puteți afișa rezultatele și genera rapoarte folosind Istanbul sau puteți publica rezultatele testului pe coveralls.io.
Introducere în Jasmine-Jquery
Jasmine-Jquery este un pachet de noduri care ajută la testarea codurilor front-end construite cu jquery. Într-un fel, extinde cadrul Jasmine pentru a fi potrivit pentru testarea front-end a lui Jquery.
Extensiile pe care le adaugă în cadrul Jasmine includ:
- Un set de potriviri personalizate pentru cadrul Jquery, cum ar fi toBeChecked, toBeDisabled, toBeEmpty etc.
- Un API pentru gestionarea programelor HTML, CSS și JSON din specificațiile noastre.
Acum întrebarea este „ce este un API?” Un API (interfață de programare a aplicațiilor) este o interfață care vă oferă acces la anumite funcții care vă pot necesita timp și resurse pentru a le construi de la zero.
O altă întrebare este ce sunt programele? Dispozitivele sunt stări predefinite ale unui obiect pe care îl creăm de obicei în timp ce scriem teste, astfel încât să stabilim o linie de bază (un mediu bine cunoscut și fix) pe baza căreia testele sunt executate pentru a face rezultatele repetabile.
Vedea Aici pentru mai multe detalii despre potrivirile personalizate și API-urile.
Concluzie
În acest tutorial, am încercat să înțelegem ce este un cadru de testare și am introdus Jasmine ca cadru de testare JavaScript. Am analizat diferite construcții ale lui Jasmine care pot fi utilizate pentru a scrie specificații de testare și am introdus în cele din urmă Jasmine-Jquery, care este un pachet bazat pe noduri care extinde Jasmine pentru a putea testa aplicațiile Jquery.
Concluzii
- Un cadru de testare este o suită de programe sau pachete care facilitează testarea software-ului pentru a asigura calitatea software-ului dezvoltat.
- Jasmine este un instrument de dezvoltare bazat pe comportament, care oferă construcții care facilitează scrierea specificațiilor de testare pentru aplicațiile JavaScript.
- Test-Driven Development este o abordare de dezvoltare în care scriem testele mai întâi și apoi le rulăm. Fiecare test eșuează la prima sa execuție, deoarece funcția pe care o folosește nu a fost încă scrisă. Scriem apoi funcțiile și reluăm testele. Aici, unele dintre teste eșuează, iar altele trec. Apoi, continuăm să refactorizăm codul până când toate testele trec.
- O abordare de dezvoltare bazată pe comportament este o abordare de dezvoltare în care sunt scrise teste pentru a se asigura că caracteristicile software-ului se comportă conform așteptărilor tuturor părților interesate.
- Jasmine-Jquery este un pachet de noduri care ajută la testarea codurilor front-end create cu Jquery.
Următorul tutorial
În viitorul nostru tutorial, vom explora modalitățile de utilizare a acestor două instrumente (Jasmine și Karma) pentru a scrie specificații de testare pentru un proiect tipic. Vom vedea, de asemenea, cum să folosim celelalte instrumente, cum ar fi gulp, browserify, etc. care sunt necesare pentru ca testele noastre să fie puse în funcțiune.
PREV Tutorial | NEXT Tutorial
Lectură recomandată
- 8 Cele mai bune instrumente și cadre de testare pentru dezvoltarea comportamentului (BDD)
- Cum sunt implicați testerii în tehnicile TDD, BDD și ATDD
- TDD Vs BDD - Analizați diferențele cu exemple
- BDD (Behavior Driven Development) Framework: Un tutorial complet
- Cum se scrie un document de strategie de testare (cu un șablon de strategie de testare)
- Cele mai bune 10 instrumente de testare API în 2021 (SOAP și REST API Testing Tools)
- Tutorial API de testare: un ghid complet pentru începători
- Tutorial Python DateTime cu exemple