Hogyan teszteljük a REACT SITES ÉS APPS tesztelését

Sep 10, 2025
kézikönyv
Test React
(Kép hitel: jövő)

Ha szeretné tudni, hogyan kell tesztelni, akkor a megfelelő helyen van. Tényleg ismeri a kódját, amit meg kell tennie? Tesztelte a böngészőben? Mi van, ha nem, vagy nem tudsz mindent megtenni, és megszakad a termelésben?

A tesztelő könyvtár egy segédprogramok csoportja, amelyek az alkalmazási összetevőkre vonatkozó egyedi teszteket írnak. A teszt alapelők része:

  • Leírás: leírja, hogy mi a teszt
  • Használat / render: az összetevőt egy olyan környezetben használja, ahol tesztelhető
  • Gúnyos: létrehozza a funkciókat, hogy ellenőrizhesse feltételezéseit

Során ezt a cikket, fogom felfedezni néhány példát a reagálnak vizsgálati könyvtár annak érdekében, hogy segítsen az elindulásban ezzel értékes módja megbízhatóságának javítása a kód kimenet, valamint biztosítja a kód nem dobja bármilyen csúnya meglepetés, miután a termelésbe kerül.

Szeretne több hasznos erőforrásokat? Itt van a legjobban a legjobb Webes tervezési eszközök Körülbelül segít abban, hogy okosabb dolgozni. Vagy ha szüksége van egy új gépre, próbálja meg ezt a kerekítést Legjobb laptopok a programozáshoz . Vagy ha új webhelyet építesz, akkor szükséged van egy nagyszerű weboldal építője .

01. Kezdje el a React Testing Könyvtárat

Ezt a demóhoz létrehozom a CREATE-REACT-APP-t, mert már előkészíti a tesztelő könyvtárat. Ha Gatsby-t vagy egyéni beállítást használ, akkor lehet, hogy néhány konfiguráció kell futnia, mielőtt elkezdené a tesztelő könyvtár használatát.

Kezdje, hozzon létre egy új alkalmazást. Ha már a NODE.JS legújabb verziója van, akkor a következő parancsot futtathatja anélkül, hogy bármi mást telepítene) a globálisan:

npx create-react-app netmag-javascript-testing

02. Döntse el, mit kell tesztelni

Képzeld el, hogy van egy egyszerű összetevője, mondjon egy gombot néhány állapotban. Melyek azok a dolgok, amelyeknek szüksége van egy ilyen komponensre?

Az összetevő megjelenése:

Nem akarunk semmit, hogy váratlanul megváltoztassuk, miután az összetevőünket írtuk. Tehát pillanatfelvételt fogunk írni, hogy megragadjuk, hogyan rendezi. Aztán, ha bármi változik, akkor gyorsan láthatjuk manuális vagy vizuális teszt nélkül. Ez nagyszerű az alkatrészek számára, amelyek sok kisebb összetevőből állnak: gyorsan láthatod, amikor (és hol) megjelenik a megjelenése.

A különböző fiókok:

Mivel két vagy több különböző kimenetet lehetünk, meg kell vizsgálnunk, hogy mindenkit helyesen rendezzük, nem csak egyikük. Tehát szimulálni kell egy kattintási eseményt, és van egy másik pillanatfelvétel tesztje, ahogyan a kód ágának futtatása után megjelent.

Ez a funkciók a várt módon hívják:

Szeretnénk biztosítani, hogy a kód, amit írtunk, hogy hívjunk egy másik funkciót, ahogy azt feltételezzük, hogy ez lesz. De mivel ez a funkció egy külső függőség, nem szeretnénk ezt tesztelni. Vizsgálatainknak csak a funkcionalitást kell kapniuk, amit akarunk.

03. Írja be az első tesztet

Test React

(Kép: © Ben Olvasás)

Írjuk meg az első tesztünket. Hozzon létre egy új fájlt Mycomponent.unit.test.js ugyanabban a mappában, mint az összetevő. A Test.js-hez való hozzáadásával a Vizsgálati könyvtár automatikusan kiválasztja. A fájl tartalma alatt van:

 Az importálás reagál a "reagálva"
Import {render} a "@ tesztelés-könyvtár / reagálás"
import a "./mycomponent"
leírja ("a & lt; mycomonent / & gt; ', () = & gt; {
    // tesztek itt
}) 

Az első dolog, amit szeretnék felhívni a figyelmet a leírja () Funkció, amely két argumentumot vesz igénybe: Az első olyan karakterlánc, amelyet használhat, hogy jobban leírhassa - szöveges karakterláncként - milyen tesztet fog tenni. A mi esetünkben egyszerűen azt mondtuk, hogy meg kell rendeznie. Ez nagyon hasznos, ha valaki más a kódodra néz, vagy emlékeznie kell arra, amit egy későbbi szakaszban tettél. A jó írásbeli nyilatkozatok a kód dokumentációjának formája és egy másik jó oka a tesztek írásának.

A második argumentum a tesztek. A leírja () A funkció az összes tesztet egymás után futtatja.

04. Használja a tisztítási funkciót

Vezessünk be egy helper funkciót Az előkötelezettség () . Ezt kell használnunk, mert minden alkalommal, amikor valamit csinálunk az összetevővel, friss másolatot akarunk anélkül, hogy a korábban már az összetevőben már meglévő kellett volna. Vagy lehet, hogy újra meg kell adnunk az összetevőt: Az előkötelezettség () Ez nekem, és átadhatjuk a tisztítási funkciót.

 Import {Render, Cleanup} a "@ tesztelés-könyvtár / reagálás"
...
leírja ("Az összetevőnek meg kell adnia", () = & gt; {
  ELŐKÉSZÍTÉS (CLEANUP)
} 

05. Írjon pillanatkép tesztet

Test React

(Kép: © Ben Olvasás)

Ebben a lépésben a komponensünkre (vagy renderelésére) leszünk.

 Ismertesse ("Az összetevőnek meg kell adnia", () = & gt; {
  ELŐKÉSZÍTÉS (CLEANUP)
  ez ("alapvető kellékekkel", () = & gt; {
    render (& micomonent / & gt;)
  })
} 

Ez a render hozzáférést biztosít az összeállított komponens összes renderelt tulajdonságaihoz. Jó lehet, hogy ezt a konzol.log () Szóval jobban láthatod, hogy mit csinál.
Ha igen, látni fogod, hogy van néhány hasznos tulajdonság, amit kihasználhatunk itt. Megállítom az állítást (tesztelhető nyilatkozat készítése), és teszteljem azt a tartály kitermelésével. A tartály "a komponenshez társított DOM csomópontokat (az összes HTML) tartalmazza.

 ("az alapvető kellékekkel való ellátás", () = & gt; {
    CONST {CONTAINER} = render (& lt; mycomonent / & gt;)
}) 

Most már hozzáférhetünk a tartályhoz, hogyan mondhatom el, hogy az állításom szerint renderelte? Pillanatfelvétel teszt hozzáadásával.

Gondolj egy pillanatfelvétre, mint egy fénykép. A komponensünk pillanatképét egy adott időpontban veszi igénybe. Akkor, amikor megváltoztatjuk a kódot, láthatjuk, hogy még mindig megfelel-e az eredeti pillanatképnek. Ha igen, biztosak lehetünk abban, hogy semmi sem változott az összetevőben. Ha azonban nem, akkor esetleg felfedezhetünk egy olyan kérdést, amely egy másik összetevőből származik, az egyik, amit nem lehetett volna korábban:

06. Vizsgálati tulajdonságok

A komponensek és a tulajdonságok, a komponensek is tesztelhetők pillanatfelvételekkel is. A komponensnek nyújtott különböző kellékek tesztelése nagyobb lefedettséget és bizalmat biztosít. Soha nem tudhatod, hogy ha egy követelmény azt jelenti, hogy az összetevői kellékeit visszafogadják, és a végső kimenet megváltozik.

Adja hozzá a következő objektumot a fájl tetejére:

 CONST LIGHTPROPERTIES = {
    BackgroundColour: 'White',
    Texcolour: "DarkBlue"
} 

Meghatározzuk az objektum tulajdonságait, majd használjuk a Spread operőt (három pont, amelyet az objektum neve követ: ... LightProperties) Mivel csak egy érvét tudunk átadni, amikor így teszünk. Hasznos lehet látni, hogy milyen tulajdonságokkal jársz el az elszigeteltségben:

 ("az alapvető kellékekkel való ellátás", () = & gt; {
        CONST {CONTAINER} = render (& micomonent / & gt;
      )
     elvárja (konténer) .tomatchsnapshot ()
    })
    ez ("a fényversenyek", () = & gt; {
        CONST {CONTAINER} = render (
            & lt; mycomonent {... lightproperties} / & gt;
        )
        elvárja (konténer) .tomatchsnapshot ()
    })

07. Vizsgálati változások az UI-ban

Képzeld el, hogy komponenseinknek van egy gombja, és meg akarja győződni arról, hogy valami történik, ha a gomb rákattint. Talán azt gondolja, hogy szeretné tesztelni az alkalmazás állapotát; Például, akkor kísértés, hogy tesztelje, hogy az állam frissül. Ez azonban nem a tesztek tárgya.

Ez egy fontos koncepciót vezet be a tesztelő könyvtár használatában: Nem vagyunk itt, hogy teszteljük az államot vagy a komponensünk működését. Itt vagyunk, hogy teszteljük, hogy az emberek hogyan használják az összetevőt, és megfelelnek az elvárásainak.

Tehát, hogy az állam frissül-e, lényegtelen; Ami azt szeretnénk, hogy teszteljük, mi a gomb megnyomásával.

Képzeljük el, hogy teszteljük egy olyan funkció kimenetelét, amely megváltoztatja az UI-t a sötét módból a fény módba. Itt van az összetevő:

 CONST modetoggle = () = & gt; {
    CONST [MODE, SETMODE] = USESTATE ['LIGHT']
   const toggletheme = () = & gt; {
     Ha (téma === "fény") {
       settheme ("sötét")
     } más {
       settheme ('light')
     }
   }
    Visszatérés (
        & lt; ToggleButton Data-TestID = "MODE-TOGGLE" LIGHTMODE = {MODE} ONCLICK = {TOGGLEMODE} & GT;
          Toggle mód
        & lt; / togglebutton & gt;
    )
}

Először is hozzá kell adnunk egy tesztazonosítót a gombra, hogy megtaláljuk a renderelési fázisban:

 Visszatérés (
    & lt; ToggleButton
      Adat-testid = "Mód-váltó"
      LIGHMODE = {MODE}
      onclick = {togglemode}
     & gt;
      Toggle mód
    & lt; / togglebutton & gt;

Észrevette, hogy hozzáadtuk az új attribútumot adathordozó a gombra? Így tesztelheti ezt. Először is, importáljon egy új funkciót, tűzve a tesztelő könyvtárból:

 Import {Cleanup,
          Fireevent,
          Vakol
} a "@ tesztelés-könyvtár / reagálás"

Használhatjuk ezt a funkciót, hogy teszteljük az UI-ben, és hogy ezek a változások következetesek:

 ("az alapvető kellékekkel való ellátás", () = & gt; {
    CONST {CONTAINER} = render (& togglebutton / & gt;
  )
 elvárja (konténer) .tomatchsnapshot ()
})
ez ("a könnyű ui-t kattintva", () = & gt; {
    CONST {CONTAINER, GETBYTESTID} = render (& togglebutton / & gt;)
    fireevent.click (getbytestid ('mód-toggle'))
    elvárja (konténer) .tomatchsnapshot ()
}) 

Ez nagyszerű: nem kell manuálisan eljutnunk az oldalra, és nézzük körül, majd kattintsunk a gombra, és nézzük meg a második alkalommal - amely alatt elismerheted, valószínűleg elfelejteni vagy hiányozni valamit! Most bizalommal rendelkezünk, hogy ugyanazt a bemenetet adjuk, ugyanazt a kimenetet várhatjuk a komponensünkben.

Amikor a teszt azonosítókra kerül sor, személyesen nem tetszik adathordozó valamit találni a domban. Végtére is, a tesztek tárgya az, hogy utánozza, hogy mit csinál a felhasználó, és tesztelje, mi történik, ha igen. adathordozó Úgy érzi, mintha egy kis csalás - bár az adat-testületek valószínűleg hasznosak lesznek a QA mérnöke számára (lásd a minőségbiztosítási mérnökök szerepét).

Ehelyett használhatjuk getbytext () és adja át a gombunk szövegét. Ez a módszer sokkal több viselkedéspont lenne.

08. Mock és kémítse a funkciót

Néha esetleg szükségünk van egy függvényre, de ez a funkció a vizsgálat hatálya alá tartozik. Például van egy külön modul, amely olyan funkciót tartalmaz, amely kiszámítja a PI értékét egy bizonyos számú tizedes számra.

Nem kell tesztelni, hogy mi a modul eredménye. Meg kell vizsgálnom, hogy a funkcióm a várt módon történik. További információért, hogy miért van ez, nézze meg a dobozegységet és az integrációs teszteket. Ebben az esetben "Mock" -t tudtunk megtudni:

 CONST GETPIVALUE = JEST.FN ()
azt (hívja a funkciót a kattintáson ", () = & gt; {
    CONST {CONTAINER, GETBYTESTID} = render (& togglebutton / & gt;)
    fireevent.click (getbytestid ('mód-toggle'))
    elvárják (getpivalue) .havebeenCalledtimes (1)
  )
}) 

A funkció tohavebeencalledtimes () az egyik sok segítő funkció a tesztkönyvtárban, amely lehetővé teszi számunkra

A funkciók kimenetének tesztelése. Ez lehetővé teszi számunkra, hogy ne csak a tesztjeinket csak a tesztelhett modulhoz kössük, hanem azt is jelenti, hogy "kémkedhetünk", vagy meglátogathatjuk, hogy mi a funkciójuk, ha ezt a funkciót hívja.

09. Kezdje el a tesztelést

Test React

(Kép: © React Testing Library)

Az írásvizsgálatok egy kicsit megdöbbentőnek tűnhetnek. Remélem, ez a bemutató egy kicsit több bizalmat adott neked, hogy kipróbálhassa. Mivel elkezdtem írni teszteket az alkalmazásaimra, tényleg nem mehetek vissza: könnyebben pihenhetek, tudva, hogy sokkal jobb örökséget hagyok azoknak, akik a jövőben fogják használni a munkámat.

További ötletek az összetevők tesztelésével kapcsolatban, látogasson el Reagáljon tesztelési könyvtárat vagy Reagáljon vizsgálati példákat . Ha néhány kurzust keres, hogy segítsen elkezdeni, az egyik Kent C Dodds (Ki írta és fenntartja a reagálás tesztelő könyvtárat) népszerű. Én is élveztem Ez a szint felfelé mutató oktatóanyagok Ez az, amiért nekem kezdtem írni teszteket a kódomat.

Ne feledje, ha összetett webhelyet építesz, akkor meg akarja kapni web hosting szolgáltatási helyszínen. És ha ez a webhely valószínűleg sok eszközt tartalmaz, megbízhatóan tárolja őket felhő tároló döntő fontosságú.

Ez a tartalom eredetileg megjelent net magazin . Olvassa el többet Webes design cikkek itt .

Olvass tovább:

  • HTML6: Mi az, és mikor érkezik?
  • Írjon HTML kódot gyorsabban
  • Mobilalkalmazás tervezése: kezdő útmutató

kézikönyv - Most Popular Articles

További információ az Artrage 6-ról: Legjobb tippek a munkafolyamat növeléséhez

kézikönyv Sep 10, 2025

(Kép hitel: Steve Goad) Ebben a cikkben tanácsot adok és betekintést kapok az Arthrage-on, egy programot használ..


Hogyan Kitbash a SHAPR3D-vel együtt

kézikönyv Sep 10, 2025

(Kép hitel: Adam DEHirst) A Shapr3D nagyszerű eszköz a Kitbashing számára. Segít abban, hogy szó szerint basol..


Kezdjük az Adobe Dimenzióval CC-vel

kézikönyv Sep 10, 2025

Az Adobe dimenziója szellővel rendelkezik komplex jelenetek beállításához (Kép hitel: Mike Griggs) ..


Hogyan kell elrejteni a JavaScript kódot a nézetforrásból

kézikönyv Sep 10, 2025

Ha nem veszi óvintézkedéseket a JavaScript-kóddal, akkor könnyedén az életet, aki azt akarja, hogy klónozza. De ha a prog..


14 ZBRUSH munkafolyamat tippek

kézikönyv Sep 10, 2025

Minden művésznek saját egyedi munkafolyamatuk van, amikor 3D-s művészetet hoz létre Zbrushban. Ez a munkafolyamat egy csom�..


Hogyan készítsünk egy műszerfal-alkalmazást reagálással

kézikönyv Sep 10, 2025

Page 1 of 2: Állítsa be a műszerfal-alkalmazást reakcióban - 1-10 lépés ..


festeni egy szőrös állat portré

kézikönyv Sep 10, 2025

A befejezett macska portréja Festés háziállatok és Állatok rajzolása sok móka lehet. B�..


Hozzon létre perspektívát a Photoshop textúráinak elhajlásával

kézikönyv Sep 10, 2025

Híres hívő vagyok, hogy nem kellene pusztán támaszkodnia a szoftverre, hogy elvégezze a munkát az Ön számára. A jó mű..


Kategóriák