Knižnica React Testing: Naučte sa základy

Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Knižnica React Testing: Naučte sa základy

Pred niekoľkými mesiacmi som bol najatý na testovanie a Reagovať webové stránky. Problém? S Reactom som mal málo skúseností a aby som postupoval podľa testovacej dokumentácie od React, od Enzým and React Testing Library bolo dosť komplikované. Potom, čo som tomu všetkému porozumel, rozhodol som sa urobiť tento návod.

Ďalšou dôležitou vecou, ​​ktorú som chcel povedať, je, že som sa na testy pokúsil použiť enzým, ale na jednoduché to nestačilo. Nebolo to jednoduchšie čítanie ako React Testing Library, a preto som si ju nakoniec vybral.

Úvod do základnej syntaxe

Aby sa Je chybová správa ľahko čitateľná, v | _+_ | máme tri úrovne popisov - na označenie komponentu | _+_ | (označiť skupinu testov podľa nejakého kontextu) a | _+_ | (ktorý popisuje, na čo sa tento konkrétny test a skupina tvrdení (urobených s | _+_ |) vzťahuje).



Potom máme funkciu | _+_ | ** **, čo je metóda, ktorá vloží tento komponent do Jest DOM a vloží ho do | _+_ |. Práve to použijeme na tvrdenie. | _+_ | argument je prvok React s príslušnými rekvizitami. V tejto prvej ukážke kódu som zadal minimálne rekvizity potrebné pre platné DropDown pomocou vzorov WAI-ARIA Design Patterns.

A nakoniec máme | _+_ | ** ** s dvoma úvahami:

  • Ukazovateľ na prvok v DOM; prvok HTML.
  • Tvrdenie ToBe.

Tu je príklad:

nameOfComponent.test.js

dva divs vedľa seba flexbox

Príklad hlásenia pomocou '| _+_ | a to

Čo je to renderResult?

console.log (RenderResult)

TK (ThingYouWant ToBeSure) sú tieto technologické rozhovory alebo svinstvo? Najlepším spôsobom, ako zistiť, čo argumentujete, je prejsť na | _+_ | (ThingYouWant ToBeSure) a skontrolovať výstupnú sekciu Terminál VSCode , pretože sekcia terminálu môže niektoré dôležité veci vynechať.

| _+_ | je objekt s niekoľkými metódami. Jedným z nich je kontajner, ktorý vracia | _+_ | a | _+_ |, ktoré má naše | _+_ | komponent vo vnútri.

| _+_ | poskytuje metódy, ktoré uľahčujú hľadanie prvkov v DOM. Preto potrebujeme metódy get, alias dotazy, popísané v súbore React Testing Library API .

Query API

console.log (renderResult.getByText (lab1))

Pretože deti štítka sú v tomto komponente prvkom označenia, reťazec | _+_ | je v dokumente. Môžeme to vidieť v | _+_ |.

Takže | _+_ | vráti sa pravda.

Čakajúce rekvizity z prvku štítka

| _+_ | query je privlastnený na vytvorenie tvrdenia v jedinečnom reťazci, ktorý sa vizuálne objaví v dokumente HTML. Tu je niekoľko ďalších príkladov:

console.log (renderResult.container)

| _+_ | Vráti ukazovateľ na prvok DOM a my máme prístup k rozhraniu DOM API na vyhľadávanie ďalších súvisiacich uzlov, ako sú tieto dotazy:

describe

Text pre deti dostávame do prvej značky span.

it

| _+_ | z prvého | _+_ |.

expect

| _+_ | obsah z prvého | _+_ |.

render

Prvý | _+_ | s triedou s názvom | _+_ |.

renderResult

Ak je v druhom | _+_ | je | _+_ | ktorý obsahuje zaškrtnuteľnú triedu.

Použitím iba týchto príkladov by som mohol urobiť všetky tvrdenia potrebné pre 12 komponentov vzoru WAI-ARIA-začiarkavacie políčko, zadávanie dátumu, DropDown, rádio, tlačidlo, skupina tlačidiel, tabuľka, karty, zoznam viacerých výberov atď. To však neplatí na všetky druhy rekvizít.

História, smerovač a formuláre

Tu je príklad odkazu a testu vyhľadávacích dopytov na odkaz:

render

V oboch prípadoch musíme použiť udalosť kliknutia, aby sme tento nový stav preniesli do nášho | _+_ | a aby bol dotaz vložený do | _+_ |. Na uskutočnenie kliknutia používame | _+_ | vytvoriť odkaz na prvok span.

Je dôležité mať na pamäti, že udalosť kliknutia sa šíri do prvku odkazu (jeho rodičov). Preto kliknutie spustí metódy prepojenia a dotazu, ale zameranie v rovnakom kontexte nie. Teraz sa pozrime na históriu:

Preto vyvodzujeme, že validácia komponentu odkazu je:

expects

A na testovanie zmien parametrov vyhľadávania:

describe('DropDown basic props tests', () => { it('Minimal props DropDown', () => { const renderResult = render( ); expect(resultadoDoRender.getByText('lab1')).toBeInTheDocument(); });

Ak nepoznáte a nepoužívate React Router, odporúčam vám ho začať používať.

TK užitočný odkaz na portugalský článok? Ďalšia vec, ktorú odporúčam, je, aby ste používali Formik pre Formuláre. Tu je článok o Formiku (v portugalčine).

Formik však pri testovaní požaduje aj svoje vlastné zváženie:

describe

Toto sú dve jednoduché overenia, ktoré zaisťujú, že sa vykreslenie nespustí. Môžete však overiť ďalšie hodnoty atribútov | _+_ | tag, ako v príkladoch, ktoré sme urobili predtým.

Pálkové udalosti a používanie knihy rozprávok

Udalosti pri požiari vyžadujú dve úvahy. Ktorý prvok HTML musíte použiť na vyvolanie udalosti a ak má udalosť nejaké parametre, napríklad | _+_ |.

Rekvizity funkcií ako | _+_ |, | _+_ |, | _+_ | atď. By mali byť dobre zdokumentované, aby sme vedeli, akým prvkom HTML sú ich poslucháči. Tester je schopný napísať testovací kód nezávisle od implementácie komponentu, pretože existujú udalosti, ako napríklad zaostrenie, ktoré sa nešíria na rodiča.

Na jednoduchú identifikáciu prvku HTML je to v zásade rovnaké ako predtým - použitie | _+_ | - splniť očakávania. Ak chcete zistiť, ktoré udalosti používajú, a nazvať funkciu rekvizitou, je vhodné použiť Rozprávková kniha dokumentovať komponent izolovane, jeho vzhľad a správanie. Vďaka tomu budú testy veľmi reálne.

Príklady streleckej udalosti

Vždy je dobré mať na pamäti, že to závisí od vášho komponentu! Tu sa teda zameriame na udalosť, nie na komponent.

Jednoduché kliknutie na text rozsahu pomocou tlačidla.

console.log

Ukážte myšou na obsah, napríklad ako popis.

console.log(renderResult)

Kliknite na nevybratú možnosť a vybranú možnosť v zozname viacerých výberov.

DIV

Kliknutím vyberte možnosť a potom kliknutím ju odošlite.

HTMLBodyElement

Vloženie dátumu na | _+_ | zavolať jej | _+_ | falošná funkcia.

ako kúpiť hashgraph
DropDown

byť Be's

Použil som iba tie nižšie, ale existuje mnoho ďalších.

  • | _+_ | - slúži na potvrdenie textu, ktorý sa nachádza v DOM. Odseky, štítky tlačidiel, popisy, texty, prázdne upozornenia na obsah atď.…
  • | _+_ | - zistiť, či v prvku HTML, na ktorý odkazujem, v reťazci | _+_ | existuje reťazec. Ak je niečo v očakávaní „===“, ďalšia vec v | _+_ | bude to pravda
  • | _+_ | - zistiť, či niečo nie je! == nedefinované. Najpoužívanejším prípadom je, keď je trieda, ktorá existuje iba preto, že som prešiel logickou rekvizitou ako: | _+_ |, | _+_ |, | _+_ |, | _+_ |, v zozname tried prvkov. .
  • | _+_ | - slúži na testovanie volania funkcií po spustení Udalostí.
  • | _+_ |, | _+_ | a | _+_ | sú všetky dôležité variácie.
  • | _+_ | - v niektorých zložkách, ktoré sú zložitejšie, dávam prednosť inicializácii testovaním Snapshot a toto je tvrdenie konkrétne pre tento prípad. Napríklad:
renderResult

Viac o testovaní snímok.

A ďalšie Jest očakáva.

Závislosti a nastavenie testu

Vykonal som všetky testy iba s týmto importom a už sme ich prediskutovali:

rotulo

V konfiguračnom súbore src/setupTests.js je dôležité:

container.innerHTML console.log

Aby sme zaručili, že každý test nebude zasahovať do ďalšieho (idempotenty), pretože stromy React namontované s renderom budú odpojené:

expect(renderResult.getByText(lab1)).toBeInTheDocument()

Nevyhnutné pre niektoré konkrétne tvrdenia:

getByText

Niektoré testy vyžadujú server MutationObserver. Modálna je v našej zložke príkladom.

renderResult.container

Do Zoznamu viacnásobného výberu bolo potrebné pridať | _+_ | falošná funkcia v modeli DOM, ktorá v predvolenom nastavení neexistuje.

.getElementsByTagName(span)[0][textContent]

Vďaka tomu sa výstraha typu podpery javí ako porucha testu.

| _+_ | v | _+_ |:

.getElementsByTagName(div)[0][id]

#reactjs #javascript

Pozri Tiež: