La prova de cada característica (també coneguda com a unitat) és fonamental per garantir que totes les funcions del programa funcionin tal com estava previst. A les proves, l'avaluació d'una capacitat concreta enfront d'un programa sencer d'extrem a extrem és força diferent. Les proves unitàries entren en joc en aquest moment.
Angular és un marc de JavaScript de codi obert basat en TypeScript. Com que JavaScript és un llenguatge de programació potent que s'utilitza per construir aplicacions en línia, és vital entendre com fer proves d'unitats en JavaScript. En aquest article s'explorarà com realitzar aquestes proves, què utilitzar i per què.
Què és Angular?
Els llocs web moderns utilitzen el llenguatge informàtic JavaScript (JS), que ofereix nombrosos elements interactius amb els quals els consumidors estan familiaritzats. Els desenvolupadors web sovint depenen dels marcs de JavaScript del costat del client per a la funcionalitat i perquè els llocs web i els actius en línia funcionin correctament.
Angular és una tecnologia que proporciona els mitjans per desenvolupar una aplicació web, ajuda en el disseny i organitza el codi subjacent. El 2010, Google va llançar el marc de JavaScript conegut com AngularJS. Conté una funció que facilita als desenvolupadors la creació d'aplicacions riques i d'una sola pàgina. El nom de les versions posteriors d'AngularJS s'escurça a Angular.
Organitzacions importants han utilitzat Angular per crear aplicacions, moltes de les quals s'han convertit en marques principals. Tal com-
- Gmail
- TV de Youtube
- paypal
- Aplicacions web de Wix
- Web de Microsoft
- oDesk
- Freelancer
Per què hauríeu de provar les aplicacions angulars?
Validar una funció de base de codi angular per funció és l'enfocament més eficaç per millorar la qualitat del codi, tenir menys defectes en la producció i menys codi mort, minimitzar els costos de manteniment i aconseguir una refactorització més ràpida i fins i tot actualitzacions sense que les inconsistències danyin tot el sistema.
Al principi, pot semblar lent, però a la llarga paga els seus fruits. Al llarg del procés de desenvolupament, s'identifiquen i corregeixen errors. Es millora el procediment de depuració. Si una prova particular falla, és senzill determinar amb precisió què no funciona com estava previst. I tot i que el desenvolupament basat en proves i les proves unitàries, en particular, semblen més complicats, aprofitant les novetats plataformes d'automatització de proves i les millors pràctiques poden simplificar i automatitzar significativament tot el procés.
Què és la prova d'unitat?
Les proves unitàries són un dels mètodes de proves automatitzades. Les proves unitàries exerceixen porcions minúscules d'una aplicació de forma aïllada i comparen el seu comportament real amb el comportament previst. La frase "aïllament total" es refereix al fet que les aplicacions angulars de prova d'unitat no estan vinculades a dependències externes, com ara bases de dades, el sistema de fitxers o serveis HTTP. Això permet que les proves unitàries siguin més fiables i ràpides, ja que ja no fallaran per dificultats amb serveis externs.
Les proves unitàries es produeixen mitjançant codi. Podeu pensar que les proves unitàries són petits programes que exerceixen la vostra aplicació interactuant amb petites seccions. Cada prova d'unitat és semblant a descriure o il·lustrar com funciona una unitat en una circumstància particular. Mitjançant la realització del conjunt de proves, els desenvolupadors poden obtenir comentaris instantanis després de modificar una base de codi.
Per què hauríeu de fer proves d'unitats angulars?
Normalment, els desenvolupadors creen primer les proves d'unitat, seguits del codi del programa real. El desenvolupament basat en proves descriu aquesta metodologia (TDD). A TDD, els requisits es converteixen en casos de prova particulars i, posteriorment, el programa es millora per superar les noves proves angulars. Les proves unitàries permeten canviar el codi sense afectar el funcionament d'altres unitats o el programa en conjunt. Això estalvia recursos ja que és més senzill per als desenvolupadors identificar els errors en aquesta etapa.
A més, dins dels entorns de prova d'unitat, els mòduls d'un producte es segreguen els uns dels altres i tenen la seva àrea de responsabilitat. En aquesta circumstància, les proves són més fiables, ja que es realitzen en un entorn restringit. A causa d'aquesta estabilitat, el codi també es fa fiable.
Juntament amb els fets esmentats anteriorment, examinem els molts avantatges de les proves unitàries.
- Les proves unitàries ajuden a localitzar i resoldre problemes més aviat. Les organitzacions que implementen proves d'unitat en el seu procés de desenvolupament i comencen a fer proves tan aviat com sigui possible durant la vida útil del programari poden trobar i solucionar problemes més ràpidament.
- El vostre conjunt de proves d'unitat serveix com a xarxa de seguretat per als desenvolupadors. Un conjunt complet de proves unitàries pot servir com a xarxa de seguretat per als desenvolupadors. En executar les proves periòdicament, poden assegurar-se que les seves recents alteracions al codi no han danyat res. En altres paraules, les proves unitàries ajuden a evitar regressions.
- Les proves unitàries poden ajudar a millorar la qualitat del codi. Aquest article segueix naturalment de l'article anterior. Com que les proves unitàries serveixen com a xarxa de seguretat, els desenvolupadors tenen més confiança a l'hora de modificar el codi. Poden reestructurar el codi sense preocupar-se de trencar res, millorant la qualitat general de la base de codi.
- Les proves unitàries poden ajudar a millorar l'arquitectura de l'aplicació. Afegir proves unitàries a una base de codi sovint indica un disseny d'aplicació d'alta qualitat. Per tant, la necessitat de produir codi comprovable pot motivar un disseny millorat. És per això que el TDD (desenvolupament impulsat per proves) és tan eficient.
- Les proves unitàries es poden utilitzar com a documentació. Les proves unitàries proporcionen exemples de com utilitzar el codi que s'està provant. En conseqüència, també podeu considerar-los com a documentació o especificacions executables.
- Identifiqueu les olors de codi a la vostra base de codi. Tenir dificultats per generar proves unitàries per a un fragment de codi en concret indica olors de codi, com ara rutines massa complicades. Si la simplicitat amb què es poden afegir proves unitàries a una base de codi és un indicador positiu, també és cert el contrari.
Com realitzar proves d'unitat en angular i provar components angulars
Quan dissenyeu proves per a components, assegureu-vos que es tinguin en compte tots aquests comportaments.
- A l'estructura HTML DOM, poden representar plantilles.
- Poden rebre dades dels components dels seus pares mitjançant les entrades i les dades de sortida mitjançant les sortides.
- Poden respondre a diversos tipus de situacions.
- Poden comunicar-se amb minoristes o serveis.
- Poden lligar dades i fer-les editables per a l'usuari.
Configureu TestBed
Angular ofereix TestBed per fer proves, que estableix un entorn on els components i serveis es poden validar i verificar fàcilment. És com un mòdul angular estàndard i es compilen totes les característiques indicades. Utilitzeu el mètode beforeEach per evitar la duplicació de codi en cada prova.
Prova el DOM
La majoria de les vegades, les funcions dels components implementen la lògica que reflecteix la plantilla. Utilitzant els mètodes de consulta i queryAll de DebugElement, podem accedir a l'arbre DOM:
- la consulta retorna el primer element que s'adapta a un criteri.
- queryAll retorna una matriu d'entrades coincidents
Controladors d'esdeveniments activats
Hi ha dues opcions per a les proves. La primera opció és executar la funció directament, mentre que la segona opció, que es recomana, és implementar un clic en aquest botó. L'ús de la propietat del controlador d'esdeveniments activador de DebugElement fa que això sigui senzill. Conté dos arguments: el nom de l'esdeveniment i les seves característiques.
Eines per a la prova d'unitats angulars
Gessamí: El marc de proves Jasmine es pot utilitzar per provar el codi JavaScript. Concretament, és un marc per a BDD (Behavior-Driven Development). A causa de la seva sintaxi senzilla i el fet que no necessita un DOM ni depèn d'altres marcs, Jasmine és fàcil d'utilitzar des de la caixa. Jasmine és el marc de prova predeterminat que recomana el manual d'Angular. L'Angular CLI configura automàticament Jasmine, de manera que no cal que l'instal·leu individualment.
Karma: El marc de prova predeterminat d'Angular és Karma. L'equip d'AngularJs el va desenvolupar perquè tenien dificultats Prova angular utilitzant les eines disponibles en aquell moment. Karma us permet provar les vostres aplicacions en navegadors web i dispositius reals, com ara tauletes i telèfons mòbils. També és molt adaptable ja que és compatible amb altres marcs de prova. El marc predeterminat d'Angular és Jasmine (del qual parlarem en un moment), però podeu canviar-lo amb Mocha, QUnit o altres. A més, la integració amb sistemes d'integració contínua com Travis, Jenkins, CircleCI i Semaphore és senzilla.
Transportador: Protractor és un instrument de prova d'extrem a extrem per a aplicacions Angular. Executa les teves proves en un navegador real i replica la interacció de l'usuari amb la teva aplicació.
CLI angular: L'Angular CLI (Command Line Interface) és una eina que es pot utilitzar per construir, desenvolupar i provar aplicacions angulars.
Prova d'unitats angulars Millors Pràctiques
Aquestes són algunes de les coses que cal seguir mentre es realitza la prova d'unitat angular:
- Les proves han de ser ràpides i senzilles, i cal que els casos de prova s'executin més ràpidament, ja que això compleix l'objectiu de les proves unitàries. Si els casos de prova angulars són massa lents, els desenvolupadors no els implementaran tan sovint com haurien de fer-ho; a més, com més senzills siguin els casos de prova d'unitat, més precises seran les conclusions de les proves.
- Els casos de prova no han de repetir la lògica de la implementació.
- Els resultats de les proves no seran previsibles ni precises sense l'exposició a entorns de producció naturals (dispositius reals que funcionin). El comportament dels casos de prova ha de ser determinista sempre que el seu codi es mantingui constant. Perquè les proves siguin deterministes, el personal d'assegurament de la qualitat ha de realitzar-les en navegadors i dispositius reals, no en emuladors i simuladors.
- Executeu constantment proves unitàries en un entorn de sorra, eliminant qualsevol dependència externa.
- Utilitzeu espies del marc Jasmine mentre proveu les dependències del servei.
- Quan es proveu components, és preferible accedir al DOM mitjançant debugElement (que proporciona una abstracció per a l'entorn d'execució principal) en lloc de l'element natiu.
- Si la vostra aplicació es troba en un servidor, utilitzeu By.css en lloc de queryselector, ja que aquest últim només és per al navegador.
- Assegureu-vos que almenys el 80 per cent del codi estigui cobert.
- Implementar un esquema de noms eficient per als casos de prova
Conclusió
Les proves unitàries són una forma necessària de proves automatitzades; alguns experts fins i tot argumenten que és el més vital. Això significa tots els llenguatges i plataformes de programació, inclòs JavaScript. Tant si utilitzeu JavaScript al backend, un marc de front-end o escriviu JavaScript vainilla, cal fer proves unitàries.
Hi ha diverses eines disponibles per a cada tipus de prova. Trieu un gadget, com ara HeadSpin, que ofereixi més avantatges i compleixi el vostre pressupost per a cada tipus de prova.