jasmine framework tutorial including jasmine jquery with examples
Aquest article inclou el marc de proves de gessamí i les seves construccions. A més, obteniu informació sobre el paquet Jasmine-Jquery que amplia Jasmine per provar les aplicacions de Jquery:
Ho vam saber tot Karma al nostre tutorial anterior d'aquesta sèrie.
En aquest tutorial, aprendrem a utilitzar Jasmine per escriure proves d’una aplicació web JavaScript i també coneixerem com utilitzar el paquet basat en nodes Jasmine-Jquery per provar l’aplicació web Jquery.
Aquí ens centrarem principalment en les construccions bàsiques de Jasmine per a les proves d’escriptura.
programa per copiar DVD a l'ordinador
Comencem!!
Què aprendreu:
Què són els marcs de prova?
Els marcs de prova són suites de programes o paquets que faciliten la prova d’un altre programa per garantir-ne la qualitat. Totes les plataformes de programació tenen el seu propi marc de proves, ja que haureu après del nostre tutorial anterior.
Hi ha diferents conjunts de proves que es poden realitzar en qualsevol sistema de programari. Exemples d'aquestes proves inclouen proves d'unitats, proves d'extrem a extrem (e2e), etc. Comproveu aquí per a més detalls.
Exemples dels marcs de proves per a aplicacions JavaScript inclouen Mocha, Jasmine, intern, jest, Qunit, etc.
Introducció a Jasmine Framework
Hi ha diferents enfocaments de desenvolupament disponibles en l’escenari actual. D’aquests, dos dels enfocaments de desenvolupament més populars inclouen el desenvolupament impulsat per proves (TDD) i el desenvolupament impulsat pel comportament (BDD).
El desenvolupament impulsat per proves és un enfocament de desenvolupament on escrivim primer les proves i després les executem. Cada prova falla en la seva primera execució perquè les funcions que utilitza encara no s'han escrit.
A continuació, escrivim les funcions i tornem a executar les proves. Aquí, algunes de les proves fracassen i les altres superen. Continuem refactoritzant el codi per passar totes les proves.
El desenvolupament impulsat per la conducta també segueix el mateix enfocament. L'única diferència és que BDD està escrit per satisfer els propietaris del programari (orientat al client / empresa), és a dir, per complir les funcions del programari amb els requisits empresarials o el comportament esperat.
Mentre que TDD està escrit per satisfer els desenvolupadors del programari de manera que es pot assegurar que les funcions del programari que s’utilitzen en la creació de les funcions produeixen resultats precisos, estables i fiables.
Veure aquí per saber més sobre TDD vs BDD.
Jasmine és un marc de proves de JavaScript basat en el comportament, que facilita l’escriptura de proves i no depèn de cap altre marc.
Hi ha dues maneres d’utilitzar Jasmine per escriure les proves. Una manera és utilitzar la versió autònoma que ve amb specRunner.html (que mostra els resultats de les proves en un navegador). L’altra manera és simplement instal·lar Jasmine, escriure les proves i executar-lo amb un corredor de proves com Karma per obtenir els resultats a la finestra de la consola.
Veuríem les dues maneres d’utilitzar Jasmine al nostre proper tutorial.
Construccions bàsiques de gessamí per a proves d'escriptura
A continuació es detallen les diverses construccions de Jasmine per a proves d’escriptura.
A veure !!
# 1) descriu: Aquesta construcció s’utilitza per escriure un conjunt de proves. Un conjunt de proves és una col·lecció de proves múltiples. 'Descriure' és una funció en si mateixa que pren dos paràmetres: El nom de la suite i una funció .
El paràmetre de funció conté una col·lecció de proves agrupades a la suite de proves.
# 2): Aquesta construcció s'utilitza per escriure una especificació de prova. Una especificació de prova és un conjunt de construccions que estan provant una expectativa particular o més mínima per a un sistema.
Igual que descriu la construcció, també pren dos paràmetres: El nom de la prova i la funció que conté les afirmacions que avaluen si es compleix o no l'expectativa.
# 3) esperar : Aquesta construcció ajuda a provar si es compleixen o no les expectatives del sistema de programari.
Pren un paràmetre anomenat real (que és el resultat que torna el sistema de programari) i, després, s’encadena amb una altra construcció anomenada aparellador (resultat esperat).
# 4) Partits : Es tracta d'una col·lecció de construccions a les quals es construeix la construcció esperada. Determina si es compleix o no l'expectativa.
Aquestes construccions prenen el valor esperat de la prova més propera que es realitza i el fan coincidir amb el valor real obtingut en executar la prova. Feu clic a aquí per obtenir una llista completa de construccions de Jasmine matcher
# 5) abans de cadascun : Aquesta és una construcció global, proporcionada per Jasmine per ajudar-vos a mantenir les proves SECES (no us repetiu). Aquesta construcció s'utilitza normalment al paràmetre de funció de la construcció descrita.
Qualsevol codi dins s’executa una vegada abans que s’executin les especificacions de les suites. Per tant, qualsevol codi que vulgueu executar primer abans de totes les especificacions de la suite s'hauria de col·locar aquí.
# 6) després de cadascun: Aquesta construcció és la mateixa que beforeEach i la diferència és que el codi que conté s’executa després de cada codi un cop s’executa la construcció descrita.
# 7) això : Aquesta construcció és un objecte buit que es pot utilitzar per compartir valors entre les construccions 'beforeEach', 'afterEach' i 'it' en qualsevol suite de proves. Cada conjunt de proves té el seu propi objecte i l'objecte es restableix al buit abans que s'executin les proves.
# 8) descriu x : Aquesta construcció s'utilitza per desactivar les suites de programari. Simplement diu al corredor de proves que salti el conjunt de proves i, per tant, el seu resultat no es mostra i es considera.
# 9) encert : Aquesta construcció s'utilitza per indicar una especificació d'una suite com a especificació pendent. Una especificació pendent és una especificació que no s'executarà però que tindrà els seus noms al resultat de la prova com a pendents.
A més, si en alguna especificació s’anomena la funció pendent, l’especificació es marca com a especificació pendent. Qualsevol especificació declarada sense un cos de funció també s'etiqueta com a pendent.
els dos elements principals provats en la prova d'integració són les interfícies i els resultats esperats.
# 10) spyOn : Aquesta construcció s'utilitza per crear un espia Jasmine. Els espies són burles. Els simulacres són objectes falsos creats per representar o imitar l’objecte real. Es requereixen burles per evitar el cost general de crear l'objecte real que representen.
L’essència de la prova d’unitats d’un codi és veure com una funció es comporta en diverses condicions independentment de les altres unitats connectades o que s’hi connectaran.
Per tant, realitzem proves d’unitats front-end per veure com una unitat del front-end del nostre producte de programari es comportarà independentment de les altres unitats del front-end que s’hi connectaran o hi estaran connectades.
Durant aquesta prova, fem trucades a diversos arguments i funcions que poden dependre d'altres funcions i objectes, com ara connexions de xarxa, fonts de dades i fitxers.
Per satisfer aquestes dependències (de manera que puguem dur a terme proves d’unitats front-end), és necessari posar a disposició els recursos necessaris. Per tant, adoptem simulacions per imitar els objectes del món real i evitar el cost general de crear-los.
Tingueu en compte que a un nivell senzill, spyOn s’utilitza per comprovar si realment s’anomena una funció dependent, i aquesta funció dependent pot ser només una funció simple que es defineix a l’objecte que estem espiant.
La funció spyOn té dos paràmetres: l’objecte que s’espia i la funció de dependència que conté que es comprova per assegurar-se que la nostra funció l’anomena.
Els espies existeixen a la suite o a les especificacions en què es defineixen. Un cop executada la suite o l’especificació, l’espia deixa d’existir.
# 11) createSpy: Aquesta construcció té el mateix propòsit que spyOn, però la diferència és que aquesta funció permet substituir la funció dependent per una de falsa per provar-la.
Per què he de fer això? Això és útil quan la dependència original també depèn dels altres recursos que no estan disponibles en el context de la prova.
S'accedeix a aquesta funció mitjançant l'objecte Jasmine amb un punt, és a dir, Jasmine.createSpy (paràmetres). Només pren un paràmetre, que és una cadena que representa el nom de la dependència per a la qual estem creant la simulació.
Tingueu en compte que després de crear un espia, l’espia de la primera trucada torna indefinit, ja que se suposa que la primera trucada és la seva formació. Després, després de les trucades posteriors, la funció retorna el valor real. Vegeu més detalls mentre ho explorem a continuació.
Funció de doble funció de prova de gessamí
Les construccions spyOn i createSpy fan possible la creació de simulacres (per dependència). Això no és altra cosa que provar dues funcions en una prova, per tant, la sentència 'prova doble funció'.
L’altra paraula que es pot fer servir per referir-se a les burles és ‘troncs’.
Match Spy: Hi ha diversos aparells que atenen la necessitat d’interactuar amb els espies. Inclouen: 'ToHaveBeenCalled' i 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : S'utilitza en una especificació per determinar que es va cridar la dependència que s'està espiant.
- aHaveBeenCalledWith : S'utilitza en una especificació per determinar que la dependència que s'espia es va cridar amb un determinat conjunt de paràmetres.
Visita aquí per obtenir un esquema detallat de totes les construccions de Jasmine.
tipus de bombolla en c ++
Dues maneres d'utilitzar el gessamí
Hi ha dues maneres d’escriure proves de gessamí. Un és utilitzar Jasmine com a distribució autònoma mitjançant specRunner i l’altre és utilitzar Jasmine amb un corredor de proves.
Vegem primer la realització de proves de Jasmine mitjançant l’especRunner.
Com s'utilitza la distribució independent de gessamí?
Feu clic a aquí i, a continuació, baixeu la distribució independent fent clic a Gessamí autònom .
Descomprimiu el fitxer a la carpeta del projecte. Descobrirà que afegeix aquests directoris al directori del projecte: lib, src i spec; i també afegeix aquests fitxers: specRunner.html i MIT.LICENSE.
El directori lib conté la biblioteca Jasmine que executa les proves contingudes als fitxers de prova afegits al fitxer specRunner.html. El fitxer specRunner.html us permet executar la prova i veure el resultat al navegador en un format de pàgina web en lloc de a la finestra de la consola.
El directori src conté els codis font del front-end i el directori d’especificacions conté els fitxers de prova escrits amb les suites de proves Jasmine. Per defecte, podeu veure alguns fitxers i suites de proves dins dels directoris, però no els utilitzarem, escriurem les nostres pròpies proves als nostres tutorials posteriors.
Ús de gessamí amb un corredor de proves
Aquesta és la segona forma d’utilitzar Jasmine, on configureu un corredor de proves com Karma i l’alimenteu amb el fitxer font i el fitxer d’especificacions de prova per executar les proves.
A continuació, podeu mostrar els resultats i generar informes amb Istanbul o publicar els resultats de la prova a coveralls.io.
Introducció a Jasmine-Jquery
Jasmine-Jquery és un paquet de nodes que ajuda a provar els codis front-end creats amb jquery. D’alguna manera, amplia el marc Jasmine perquè s’adapti bé a les proves frontals de Jquery.
Les extensions que afegeix al marc Jasmine inclouen:
- Un conjunt de coincidències personalitzades per al marc Jquery, com ara toBeChecked, toBeDisabled, toBeEmpty, etc.
- Una API per gestionar accessoris HTML, CSS i JSON a les nostres especificacions.
Ara la pregunta és 'què és una API?' Una API (interfície de programació d'aplicacions) és una interfície que us permet accedir a determinades funcions que poden trigar temps i recursos a crear-vos des de zero.
Una altra pregunta és què són els accessoris? Els accessoris són estats predefinits d’un objecte que solem crear mentre escrivim proves per establir una línia de base (un entorn conegut i fix) amb la qual s’executen les proves per tal de fer repetibles els resultats.
Veure aquí per obtenir més detalls sobre els concordants personalitzats i les API.
Conclusió
En aquest tutorial, hem intentat entendre què és un marc de proves i hem introduït Jasmine com a marc de proves de JavaScript. Vam examinar diferents construccions de Jasmine que es poden utilitzar per escriure especificacions de prova i finalment vam introduir Jasmine-Jquery, que és un paquet basat en nodes que amplia Jasmine per poder provar aplicacions de Jquery.
Menjar per emportar
- Un marc de proves és un conjunt de programes o paquets que faciliten la prova del programari per garantir la qualitat del programari desenvolupat.
- Jasmine és una eina de desenvolupament basada en el comportament que proporciona construccions que faciliten l'escriptura de especificacions de prova per a aplicacions JavaScript.
- El desenvolupament impulsat per proves és un enfocament de desenvolupament on escrivim primer les proves i després les executem. Cada prova falla en la seva primera execució perquè la funció que utilitza encara no s'ha escrit. A continuació, escrivim les funcions i tornem a executar les proves. Aquí, algunes de les proves fracassen i altres superen. Després, continuem refactoritzant el codi fins que passin totes les proves.
- Un enfocament de desenvolupament basat en el comportament és un enfocament de desenvolupament en el qual s’escriuen proves per comprovar que les funcions del programari es comporten tal com s’esperaven totes les parts interessades.
- Jasmine-Jquery és un paquet de nodes que ajuda a provar els codis front-end creats amb Jquery.
Pròxim tutorial
Al nostre proper tutorial, explorarem les maneres d’utilitzar aquestes dues eines (Jasmine i Karma) per escriure especificacions de prova per a un projecte típic. També veuríem com utilitzar les altres eines, com ara gulp, browserify, etc. que són necessàries per tenir les nostres proves en funcionament.
PREV Tutorial | NEXT Tutorial
Lectura recomanada
- 8 Millors eines i marcs de proves per al desenvolupament impulsat pel comportament (BDD)
- Com participen els verificadors en tècniques de TDD, BDD i ATDD
- TDD Vs BDD: analitzeu les diferències amb exemples
- Marc BDD (Behavior Driven Development): tutorial complet
- Com escriure un document d'estratègia de prova (amb una plantilla d'estratègia de prova de mostra)
- 10 millors eines de proves d'API el 2021 (eines de proves d'API SOAP i REST)
- Tutorial de proves API: una guia completa per a principiants
- Tutorial de Python DateTime amb exemples