Cum se testați reacționează site-urile și aplicațiile

Sep 10, 2025
Test React
(Credit Imagine: Viitor)

Dacă doriți să știți cum să încercați să reacționați, sunteți în locul potrivit. Chiar știi că codul tău face ceea ce ar trebui să facă? Ați testat-o ​​în browser? Dacă nu ați făcut-o sau nu puteți testa totul și se rupe în producție?

O bibliotecă de testare este un grup de dezvoltatori de utilități utilizează pentru a scrie teste individuale pe componentele aplicației. Unele dintre părțile principale ale unui test sunt:

  • Descriere: descrie ce este testul
  • Utilizați / Render: utilizează componenta într-un mediu în care poate fi testat
  • Batjocoritor: creează funcții prefăcute, astfel încât să puteți verifica ipotezele

Pe parcursul acestui articol, voi explora câteva exemple din biblioteca de testare reacțională pentru a vă ajuta să începeți cu acest mod valoros de a îmbunătăți robustețea ieșirii codului dvs., precum și asigurarea codului dvs. nu aruncați Up Surprize urâte odată ce merge în producție.

Doresc resurse mai utile? Iată o rundă a celor mai bune Instrumente de design web în jurul valorii de care vă va ajuta să lucrați mai inteligent. Sau dacă aveți nevoie de o mașină nouă, încercați această rundă de Cele mai bune laptopuri pentru programare . Sau dacă construiți un site nou, ați putea avea nevoie de un mare Builder de site-uri web .

01. Începeți cu Biblioteca de testare a reacției

Voi folosi aplicația creată-reacție pentru acest demo, deoarece este deja preconfigurată cu biblioteca de testare. Dacă utilizați GATSBY sau o configurare personalizată, ar putea exista o anumită configurație pe care trebuie să o parcurgeți înainte de a începe să utilizați biblioteca de testare.

Pentru a începe, să creăm o nouă aplicație. Dacă aveți deja o versiune recentă de NODE.JS, puteți rula următoarea comandă fără a instala altceva la nivel global:

npx create-react-app netmag-javascript-testing

02. Decideți ce să încercați

Imaginați-vă că avem o componentă simplă, spunând un buton cu unele stare. Care sunt unele dintre lucrurile care au nevoie de testare într-o componentă ca aceasta?

Apariția componentei:

Nu vrem ca nimic să se schimbe în mod neașteptat după ce am scris componenta noastră. Așadar, vom scrie un test instantaneu pentru a surprinde cum se face. Apoi, dacă se schimbă ceva, o vom vedea repede fără un test manual sau vizual. Acest lucru este minunat pentru componentele care constau din mai multe componente mai mici: puteți vedea rapid când (și unde) aspectul său a fost afectat.

Diferitele ramuri care fac:

Pentru că am putea avea două sau mai multe ieșiri diferite, trebuie să testez că îl facem corect, nu doar unul dintre ei. Așadar, trebuie să simulăm un eveniment de clic și să avem un alt test instantaneu pentru modul în care aceasta face după ce această ramură a codului a fost executată.

Aceste funcții sunt numite așa cum era de așteptat:

Vrem să ne asigurăm că codul pe care l-am scris pentru a apela o altă funcție funcționează așa cum presupunem că va fi. Dar, deoarece această funcție este o dependență externă, nu vrem să testez că aici. Testele noastre ar trebui să încapabil numai funcționalitatea pe care o dorim să le facă.

03. Scrieți primul dvs. test

Test React

(Imagine: © Ben Citiți)

Să scriem primul nostru test. Creați un fișier nou numit Mycomponent.unit.test.js. în același folder ca și componenta. Prin adăugarea de test.js la sfârșit, va fi selectată automat de biblioteca de testare. Conținutul acestui fișier este mai jos:

 Importul reacționează de la "reaction"
Import {Render} de la "@ Testing-bibliotecă / reaction"
Import MyComponent de la "./mycomponent"
Descrieți ("" MyComponent / & Gt;, () = & gt; {
    // testele merg aici
}) 

Primul lucru pe care vreau să-l atrag atenția este descrie() Funcția, care ia două argumente: primul este un șir pe care îl puteți utiliza pentru a descrie mai bine - ca șir de text - ceea ce va face testul dvs. În cazul nostru, pur și simplu am spus că ar trebui să facă. Acest lucru este foarte util când altcineva se uită la codul dvs. sau trebuie să vă amintiți ce ați făcut într-o etapă ulterioară. Scrierea declarațiilor descrise bune este o formă de documentație de cod și un alt motiv bun pentru scrierea testelor.

Al doilea argument este testele tale. descrie() Funcția va rula toate aceste teste unul după celălalt.

04. Utilizați funcția de curățare

Să introducem o funcție helper numită înainte () . Trebuie să folosim acest lucru pentru că de fiecare dată când facem ceva cu componenta, dorim o copie proaspătă fără recuzită pe care am trecut-o anterior în continuare existentă în componentă. Sau s-ar putea să trebuiască să redemină componenta: înainte () Asta pentru noi și putem trece funcția de curățare.

 Import {Render, Cleanup} de la "@ Testing-bibliotecă / reaction"
...
descrie ("componenta ar trebui să facă", () = & gt; {
  înainte de curățare (curățare)
} 

05. Scrieți un test instantaneu

Test React

(Imagine: © Ben Citiți)

În acest pas, vom ajunge la "montarea" componentei noastre (sau o facem).

 Descrieți ("componenta ar trebui să facă", () = & gt; {
  înainte de curățare (curățare)
  ("Renders cu suport de bază", () = & gt; {
    Render (& Lt; MyComponent / & Gt;)
  })
} 

Această rentabilitate ne oferă acces la toate proprietățile prestate ale componentei compilate. Ar putea fi bine să renunțați la acest lucru într-o consola.log () Deci, puteți vedea mai clar ceea ce face.
Dacă faceți, veți vedea că există câteva proprietăți utile pe care le putem profita de aici. Voi face o afirmație (face o declarație testabilă) și o testați prin extragerea containerului. Containerul "conține" nodurile DOM (toate HTML) asociate componentei.

 Aceasta ("face cu recuzită de bază, () = & gt; {
    const {container} = Render (& lt; mycomponent / & gt;)
}) 

Acum avem acces la container, cum să spun că este redat în conformitate cu afirmația mea? Prin adăugarea unui test instantaneu.

Gândiți-vă la un instantaneu ca fiind ca o fotografie. Este nevoie de un instantaneu al componentei noastre la un moment dat. Apoi ori de câte ori facem modificări la cod, putem vedea dacă se potrivește încă instantaneu original. Dacă o face, putem fi încrezători că nimic nu sa schimbat în componentă. Cu toate acestea, dacă nu, s-ar putea să fi descoperit o problemă care a provenit într-o altă componentă, pe care am putea să nu am văzut anterior:

06. Proprietăți de testare

Propoane sau proprietăți, ale unei componente pot fi testate și cu instantanee. Testarea diferitelor recuzări pe care le furnizați componentei dvs. vă va oferi o mai mare acoperire și încredere. Nu știți niciodată când o cerință va însemna că recuzele componentelor dvs. sunt refectate și ieșirea finală se va schimba.

Adăugați următorul obiect în partea de sus a fișierului dvs .:

 Const Lightproperties = {
    BackgroundColour: "White",
    TextColour: "DarkBlue"
} 

Definim proprietățile dintr-un obiect și apoi folosim operatorul de răspândire (trei puncte urmate de numele obiectului: ... lightproperties) Pentru că putem trece doar un argument atunci când facem în acest fel. De asemenea, este util să vedeți ce proprietăți aleși în izolare:

 Aceasta ("face cu recuzită de bază, () = & gt; {
        const {container} = rand (& lt; mycomponent / & gt;
      )
     Așteptați (container) .Tomatchsnapshot ()
    })
    ("Renders cu recuzita versiunii luminoase", () = & gt; {
        const {container} = Render (
            & lt; mycomponent {... lightproperties} / & gt;
        )
        Așteptați (container) .Tomatchsnapshot ()
    })

07. Modificările testului în UI

Imaginați-vă că componenta noastră are un buton și doriți să vă asigurați că se întâmplă ceva când butonul este făcut clic. S-ar putea să credeți că doriți să testați starea aplicației; De exemplu, este posibil să fiți tentați să testați că statul a fost actualizat. Cu toate acestea, acest lucru nu este obiectul acestor teste.

Acest lucru ne prezintă un concept important în utilizarea unei biblioteci de testare: nu suntem aici pentru a testa statul sau modul în care funcționează componenta noastră. Suntem aici pentru a testa modul în care oamenii vor folosi componenta și că își îndeplinește așteptările.

Deci, dacă statul a fost sau nu actualizat este imaterial; Ceea ce vrem să testăm este ceea ce rezultatul acelui buton este apăsat.

Să ne imaginăm că testează rezultatul unei funcții care modifică UI din modul întunecat în modul ușor. Iată componenta:

 const modoggle = () = & gt; {
    const [mod, setmode] = UseState ['Light']
   const toggleheme = () = & gt; {
     dacă (temă === "lumină") {
       settheme ("întuneric")
     } altfel {
       settheme ("lumină")
     }
   }
    întoarcere (
        & Lt; ToggleButton Data-TestID = "Mode-comutare" Lightmode = {modul} onclick = {tovagmode} & gt;
          Toggle MODE.
        & lt; / togglebutton & gt;
    )
}

În primul rând, ar trebui să adăugăm un ID de testare pe buton, astfel încât să îl găsim în faza de randare:

 Return (
    & lt; toglebutton
      Data-testid = "MODE-Toggle"
      Lightmode = {modul}
      onclick = {tovagmode}
     & gt;
      Toggle MODE.
    & lt; / togglebutton & gt;

Ați observat că am adăugat noul atribut Data-testid la buton? Iată cum ați putea testa asta. În primul rând, importați o nouă funcție, incendios din biblioteca de testare:

 Importul {Cleanup,
          Fireevent,
          face
} de la "@ Testing-bibliotecă / reaction"

Putem folosi această funcție pentru a testa că există schimbări în UI și că aceste modificări sunt consecvente:

 Aceasta ("face cu recuzită de bază, () = & gt; {
    const {container} = Render (& Lt; ToggleButton / & GT;
  )
 Așteptați (container) .Tomatchsnapshot ()
})
("Renders lumina ui pe clic", () = & gt; {
    const {container, getbytestid} = rand (& lt; toglebutton / & gt;)
    Fireevent.Click (getbytestid ("MODE-Toggle"))
    Așteptați (container) .Tomatchsnapshot ()
}) 

Acest lucru este minunat: Nu trebuie să mergem manual la site și să privim în jur, apoi să faceți clic pe butonul și să vă uitați în jur de a doua oară - în care, ați putea recunoaște, veți uita probabil sau pierdeți ceva! Acum putem avea încredere că, având în vedere aceeași intrare, ne putem aștepta la aceeași ieșire în componenta noastră.

Când vine vorba de ID-urile de testare, îmi place personal utilizarea Data-testid pentru a găsi ceva în DOM. La urma urmei, obiectul testelor este de a imita ceea ce face utilizatorul si sa testeze ce se intampla atunci cand fac. Data-testid Se simte ca un pic de cheat - deși testidele de date vor veni probabil la îndemână pentru inginerul dvs. QA (a se vedea box-ul rolului inginerilor de asigurare a calității).

În schimb, am putea folosi getbytext () și treceți în textul butonului nostru. Această metodă ar fi mult mai mult comportament specific.

08. Mock și spion Funcția

Uneori am putea avea nevoie de a testa un apel la o funcție, dar această funcție este în afara domeniului de aplicare al testului. De exemplu, am un modul separat care conține o funcție care calculează valoarea PI la un anumit număr de zecimale.

Nu am nevoie să testez care este rezultatul acestui modul. Trebuie să testez că funcția mea face așa cum era de așteptat. Pentru mai multe informații despre motivul pentru care este, consultați testele de unitate și integrare. În acest caz, am putea "batem" acea funcție:

 const getpivalue = jest.fn ()
("Apelați funcția pe clic", () = & gt; {
    const {container, getbytestid} = rand (& lt; toglebutton / & gt;)
    Fireevent.Click (getbytestid ("MODE-Toggle"))
    Așteptați (Getpivalue) .TOHAVEBEENCALLEDTimes (1)
  )
}) 

Functia tohavebencalledtimes () este una dintre numeroasele funcții de ajutor din biblioteca de testare care ne permite

pentru a testa ieșirea funcțiilor. Acest lucru ne permite nu numai ca testele noastre doar la modulul pe care vrem să-l testez, dar înseamnă, de asemenea, că putem "spiona" sau să vedem ce face funcția noastră atunci când numește funcția.

09. Începeți testarea aplicațiilor reacționeze

Test React

(Imagine: © reacționează biblioteca de testare)

Testele de scriere pot părea puțin descurajator pentru a începe. Sper că acest tutorial ți-a dat mai multă încredere pentru a încerca. De când am început să scriu teste pentru aplicațiile mele, chiar nu mă pot întoarce: pot să mă odihnesc mai ușor, știind că plec în urmă o moștenire mult mai bună pentru cei care vor folosi munca mea în viitor.

Pentru mai multe idei despre cum să vă testați componentele, vizitați Reacționează biblioteca de testare sau Reacționează exemplele de testare . Dacă sunteți în căutarea unor cursuri pentru a vă ajuta să începeți, Cel de Kent C Dodds (Cine a scris și menține biblioteca de testare reacționează) este populară. M-am bucurat, de asemenea acest lucru la nivel de tutoriale Este cel care ma făcut să am început să scriu teste pentru codul meu.

Amintiți-vă, dacă construiți un site complex, veți dori să vă obțineți web hosting spot de serviciu. Și dacă acest site este probabil să conțină o mulțime de active, stocându-le în fiabile Stocare in cloud este crucial.

Acest conținut a apărut inițial în revista netă . Citiți mai multe despre noi Articole de design web aici .

Citeste mai mult:

  • HTML6: Ce este și când este sosit?
  • Scrieți mai repede codul HTML
  • Aplicația mobilă Design: Ghidul unui începător

să - Cele mai populare articole

Controlul versiunii master pentru echipele la distanță

Sep 10, 2025

Lucrul de la distanță a devenit mult mai frecvent în dezvoltarea web în ultimii ani. Înainte de controlul versiunii, lucrul ..


Îmbunătățiți-vă abilitățile de artă concepte în Photoshop

Sep 10, 2025

Pentru acest atelier, aș vrea să vă arăt un mod foarte distractiv de a schița personajele de la imaginația ta. Vă voi ară..


Construiți o aplicație de proiectare a materialelor cu unghiular 2

Sep 10, 2025

Materialul unghiular este un cadru component UI care implementează specificația Google de proiectare a materialelor pentru ungh..


Rotiți fotografii în animații 3D cu Photoshop

Sep 10, 2025

Toți avem un magazin mare de amintiri luate ca fotografii și este minunat să fie capabil să reamintească. Dar dacă ați put..


vopsea o peisaj energetic în uleiuri

Sep 10, 2025

Materialele Sarah vopsele ..


Creați cadre de stil în Photoshop

Sep 10, 2025

Pagina 1 din 2: Pagina 1 Pagina 1 Pagina..


textura un Droid K-2SO autentic

Sep 10, 2025

Pagina 1 din 2: Pagina 1 Pagina 1 Pagina..


Ascuți abilitățile voastre de viață în continuare

Sep 10, 2025

Nimic nu-mi place mai bine decât să fiu în aer liber pictura lumea din jurul meu, dar a fost cu siguranță o luptă pentru mine când am început să folosesc Goatache. Lucrul cu un mediu..


Categorii