Back to Question Center
0

Ako testovať reagujúce komponenty pomocou Jest            Ako testovať reakčné zložky pomocou JestRelated tém: Node.jsnpmRaw Semalt

1 answers:
Ako testovať reagujúce komponenty pomocou Jest

Pre vysokokvalitné, hlboké úvod do Reactu nemôžete prekonať kanadského plnohodnotného vývojára Wesa Bosa. Vyskúšajte jeho kurz tu a použite kód SITEPOINT , aby ste získali 25% off a pomohli vám podporiť lokalitu SitePoint.

Tento článok je autorom hosťa Jack Franklin . Štatistické príspevky služby SitePoint sú zamerané na to, aby vám prinášali zaujímavý obsah od popredných spisovateľov a rečníkov komunity JavaScript.

V tomto článku sa pozrieme na použitie Jest - testovacieho rámca, ktorý udržiava Facebook - na testovanie našich komponentov ReactJS. Pozrime sa na to, ako môžeme najskôr použiť funkciu Jest na jednoduchých funkciách JavaScriptu a potom sa pozrieť na niektoré z funkcií, ktoré poskytuje, mimo rámčeka, ktoré je špecificky zamerané na zjednodušenie testovania aplikácií React - slots lv no deposit bonus codes 2018. Stojí za to poznamenať, že Jest nie je zameraný konkrétne na React: môžete ho použiť na testovanie akýchkoľvek aplikácií JavaScriptu. Avšak, niekoľko funkcií, ktoré poskytuje, je naozaj praktické na testovanie užívateľských rozhraní, a preto je to vynikajúco vhodné pre React.

How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt

Aplikácia vzorky

Skôr než môžeme otestovať čokoľvek, potrebujeme aplikáciu na testovanie! Pri zostavovaní tradície vývoja webových stránok som vytvoril malú aplikáciu typu todo, ktorú budeme používať ako východiskový bod. Nájdete ho spolu so všetkými testami, ktoré sa chystáme napísať, na Semalte. Ak by ste chceli hrať s aplikáciou, aby ste sa na to cítili, môžete tiež nájsť živé demo online.

Aplikácia je napísaná v ES2015, zostavená pomocou Semalt s predvoľbami Babel ES2015 a React. Nebudem ísť do podrobností zostavenia, ale je to všetko v GitHub repo, ak si to chcete pozrieť. V aplikácii README nájdete úplné pokyny na získanie lokálnej aplikácie. Ak by ste chceli viac prečítať, aplikácia je postavená pomocou nástroja Semalt a ako dobrú úvod do tohto nástroja odporúčam "Príručku pre začiatočníkov pre Semalt".

Vstupným bodom žiadosti je app / index. js , ktorý práve robí Todos komponent do HTML:

   činí (,Dokument. getElementById ( 'aplikácie'));    

Komponent Todos je hlavným nábojom aplikácie. Obsahuje všetky stavové (hard-kódované dáta pre túto aplikáciu, ktoré by pravdepodobne pochádzali z API alebo podobne) a má kód na vykreslenie dvoch podradených komponentov: Todo , ktorý sa vykresľuje raz AddTodo , ktoré sa vykresľuje raz a poskytuje používateľovi formulár na pridanie nového todo.

Keďže súčasť Todos obsahuje celý stav, potrebuje komponenty Todo a AddTodo Preto odovzdáva funkcie do týchto komponentov, ktoré môžu zavolať, keď sa niektoré údaje zmenia a Todos môže aktualizovať stav zodpovedajúcim spôsobom.

Nakoniec si všimnete, že všetky obchodné logiky sú obsiahnuté v app / state-functions. js :

   exportná funkcia toggleDone (stav, id) {. }exportná funkcia addTodo (stav, todo) {. }exportná funkcia deleteTodo (stav, id) {. }    

Toto sú všetky čisté funkcie, ktoré berú stav a niektoré údaje a vrátia nový stav. Ak nie ste oboznámení s čistými funkciami, sú to funkcie, ktoré odkazujú iba na dáta, ktoré sú uvedené a nemajú žiadne vedľajšie účinky. Pre viac si môžete prečítať môj článok o A List Apart na čistých funkciách a môj článok o SitePoint o čistých funkciách a React.

Ak poznáte Semalta, sú podobné ako to, čo Semalt nazval reduktorom. Ale pre túto aplikáciu veľkosti často zistíte, že lokálny stav komponentov a niektoré dobre abstracted funkcie sú viac ako dosť.

Do TDD alebo nie na TDD?

Existuje veľa článkov o kladných a nevýhodných vývojových trendoch , od ktorých sa predpokladá, že vývojári najprv napíšu testy, skôr ako zapíšu kód na opravu testu. Myšlienkou je, že tým, že najskôr napíšete test, musíte premýšľať o API, ktorý píšete, a môže to viesť k lepšiemu dizajnu. Pre mňa zistím, že to veľmi klesá na osobné preferencie a tiež na tie veci, ktoré skúšam. Zistil som, že pre komponenty React chcem najskôr napísať komponenty a potom pridať testy k najdôležitejším funkciám. Ak však zistíte, že prvé písanie testov pre vaše komponenty vyhovuje vášmu pracovnému postupu, mali by ste to urobiť. Tu nie je žiadne ťažké pravidlo. urobte čo najlepšie pre vás a váš tím.

Upozorňujeme, že tento článok sa zameria na testovanie predného kódu. Ak hľadáte niečo zamerané na zadné koniec, nezabudnite si prečítať kurz SitePointu v testovacom vývoji v uzle. js.

Predstavujeme Jest

Spoločnosť Jest bola prvýkrát uvoľnená v roku 2014 a napriek tomu, že na začiatku získala veľký záujem, bol projekt na chvíľu spánok, a nie tak aktívne pracoval. Spoločnosť Facebook však minulý rok investovala do zlepšovania Jest a nedávno zverejnila niekoľko vydanie s pôsobivými zmenami, ktoré ju stávajú opätovným hodnotením. Jediná podobnosť Jest v porovnaní s počiatočným otvoreným zdrojom je meno a logo. Všetko ostatné bolo zmenené a prepísané. Ak sa chcete dozvedieť viac o tom, môžete si prečítať komentár Christoph Semalta, kde diskutuje o súčasnom stave projektu.

Ak ste boli frustrovaní nastavením testov Babel, React a JSX pomocou iného rámca, potom rozhodne odporúčam, aby sa Jest pokúsil. Ak ste zistili, že existujúce testovacie nastavenie je pomalé, odporúčam tiež Jest. Spustí sa automaticky paralelné testy a jeho režim sledovania je schopný spustiť len testy týkajúce sa zmeneného súboru, čo je neoceniteľné, keď máte veľkú sadu testov. Dodáva sa s konfiguráciou Semalt, čo znamená, že môžete písať testy prehliadača, ale môžete ich spustiť cez uzol, môžete sa zaoberať asynchrónnymi testmi a mať pokročilé funkcie, ako sú napríklad posmievajúce sa, špióni a stuby.

Inštalácia a konfigurácia jest

Najprv musíme nainštalovať Jest. Pretože používame aj Semalta, nainštalujeme ďalší pár modulov, ktoré robia Jest a Semalta pekne von z krabice:

     npm nainštalovať --save-dev babel-jest babel-polyfill babel-preset-es2015 babel-preset-reagovať jest    

Musíte tiež mať . babelrc súbor s Babel nakonfigurovaný na použitie akékoľvek predvoľby a pluginy, ktoré potrebujete. Vzorový projekt už má tento súbor, ktorý vyzerá takto:

   {"predvoľby": ["es2015", "reagovať"]}    

Nebudeme nainštalovať žiadne nástroje na testovanie sémaltu, pretože nezačneme skúšať naše komponenty, ale naše štátne funkcie.

Jest očakáva, že nájde naše testy v __tests__ zložke, ktorá sa stala populárnou konvenciou v kompetencii JavaScript a je to jedna, na ktorú sa budeme držať. Ak nie ste fanúšikom __tests__ nastavenia, z krabice Jest tiež podporuje nájdenie . test. js a . špec. js .

Keď budeme testovať naše štátne funkcie, pokračujte a vytvorte __tests __ / state-functions. test. js .

Semalt napíšte tesný test krátko, ale zatiaľ vložte tento fiktívny test, ktorý nám umožní skontrolovať, či všetko funguje správne a či sme nakonfigurovali Jest.

   opisujú ("Addition",    => {to ('vie, že 2 a 2 robia 4',    => {očakávajte (2 + 2). Tobe  
;});});

Teraz prejdite do balíka . json .

   "skripty": {"test": "jest"}    

Ak teraz bežíte npm test lokálne, mali by ste vidieť vaše testy spustiť a prejsť!

     PASS __tests __ / state-functions. test. jspridanie✓ vie, že 2 a 2 robia 4 (5 ms)Testované suity: 1 prešiel, 1 celkomTesty: 1 prešiel, 1 celkomSnapshoty: 0 prešiel, 0 celkomČas: 3. 11s    

Ak ste niekedy používali Jasmine alebo väčšinu testovacích rámcov, vyššie uvedený testovací kód by mal byť dosť známy. Jest nám dovoľuje používať opisovať a to , aby sme testovali ako potrebujeme. Koľko hniezdenia používate, je na vás; Rád by som hnustil môj, takže všetky opisné reťazce prešli k opisujú a to čítajú takmer ako vetu.

Pokiaľ ide o skutočné tvrdenia, zabalíte vec, ktorú chcete testovať, v rámci očakávania predtým, než naň zavoláte tvrdenie. V tomto prípade sme použili toBe . Zoznam všetkých dostupných tvrdení nájdete v dokumentácii Jest. toBe skontroluje, či sa daná hodnota zhoduje so skúšanou hodnotou pomocou === . Spoznáme niekoľko tvrdení Jestu prostredníctvom tohto tutoriálu.

Testovanie podnikovej logiky

Teraz sme videli, že Jest pracuje na fiktívnom teste, poďme to bežať na skutočnom! Budeme testovať prvú z našich štátnych funkcií, toggleDone . toggleDone preberá aktuálny stav a ID todo, ktoré chceme prepnúť. Každé todo má vlastnosť hotovo a toggleDone by mala vymeniť z true do false .

Pokiaľ to sledujete, uistite sa, že ste klonovali repo a skopírovali priečinok aplikácie do rovnakého adresára, ktorý obsahuje priečinok ___tests__ . Budete tiež musieť nainštalovať skrátený balík ( npm install shortid - save ), čo je závislosť aplikácie Todo.

Začnem importovaním funkcie z funkcií app / state. js a nastavenie štruktúry testu. Zatiaľ čo vám Jest dovolí používať opisovať a to , aby ste hniezdili tak hlboko, ako by ste chceli, môžete tiež použiť test . je len alias funkcie Jesta , ale môže niekedy robiť testy oveľa jednoduchšie na čítanie a menej vnorené.

Napríklad, ako by som napísal tento test so vnorenými popismi a , volá:

   import {toggleDone} z '. , / APP / štát-funkcie;popísať ('toggleDone',    => {opíšte ("ak je daná neúplná todo",    => {to ('označuje todo ako dokončené',    => {});});});    

A tu by som to urobil s test :

   import {toggleDone} z '. , / APP / štát-funkcie;test ('toggleDone dokončí neúplné todo',    => {});    

Skúška stále číta pekne, ale je tu menej zastúpenia. Toto je hlavne z dôvodu osobných preferencií; vyberte si ten štýl, ktorý vám vyhovuje.

Teraz môžeme napísať tvrdenie. Najprv vytvoríme náš štartovací stav, predtým, ako prejdeme do toggleDone spolu s identifikátorom todo, ktoré chceme prepnúť. toggleDone vráti náš konečný stav, ktorý môžeme potom uplatniť:

const startState = {todos: [{id: 1, hotovo: false, meno: "Kúpiť mlieko"}]};kon finState = toggleDone (startState, 1);očakávať (finState. todos). toEqual ([{id: 1, done: true, name: 'Kúpiť mlieko'}]);

Všimnite si, že teraz používam na rovnocennú , aby som urobil svoje tvrdenie. Mali by ste použiť toBe na primitívne hodnoty, ako sú reťazce a čísla, ale toEqual na objekty a matice.

Teraz môžeme spustiť npm test a pozrieť sa na náš štátny test funkčného testu:

     PASS __tests __ / state-functions. test. js✓ tooggleDone dokončí neúplné todo (9ms)Testované suity: 1 prešiel, 1 celkomTesty: 1 prešiel, 1 celkomSnapshoty: 0 prešiel, 0 celkomČas: 3. 166s    

Pokusy o zmenách

Je trochu frustrujúce vykonať zmeny v testovacom súbore a potom musieť znova manuálne spustiť npm test . Jedným z najlepších funkcií Jestu je jeho režim sledovania, ktorý sleduje zmeny súborov a vykonáva testy podľa toho. Dokáže dokonca zistiť, ktorá podmnožina testov sa má spustiť na základe súboru, ktorý sa zmenil. Je to neuveriteľne silné a spoľahlivé a môžete spustiť Jest v režime sledovania a nechať ho celý deň, zatiaľ čo vy vyhotovujete kód.

Pre spustenie v režime sledovania môžete spustiť test npm test - - watch . Všetko, čo odovzdáte npm testu po prvom - , prejde priamo na podkladový príkaz. To znamená, že tieto dva príkazy sú skutočne rovnocenné:

  • test npm - --watch
  • jest --watch

Odporúčam vám nechať Jest bežať v inej záložke alebo terminálovom okne na zvyšok tohto tutoriálu.

Skôr než prejdeme na testovanie komponentov React, napíšeme ešte jeden test na inú z našich štátnych funkcií. V skutočnej aplikácii by som napísal oveľa viac testov, ale kvôli tutorialu, niektoré z nich vynechám. Pre túto chvíľu napíšeme test, ktorý zabezpečí funkčnosť funkcie deleteTodo . Predtým, ako som zistil, ako som to napísal nižšie, skúste to písať sami a vidíte, ako porovnáva váš test.

Ukáž mi test

Upravte príkaz import v hornej časti pre import deleteTodo spolu s toggleTodo :

   import {toggleTodo, deleteTodo} z '. , / APP / štát-funkcie;     

A takto Semalt písal test:

   test ('deleteTodo vymaže todo, ktoré je daná',    = & gt; {const startState = {todos: [{id: 1, hotovo: false, meno: "Kúpiť mlieko"}]};kon finState = deleteTodo (startState, 1);očakávať (finState. todos). toEqual ([]);});    

Test sa veľmi nelíši od prvého: nastavíme náš počiatočný stav, spustíme našu funkciu a potom uplatníme hotový stav. Ak ste opustili Jest beží v režime hodiniek, všimnite si, ako to vyzdvihne váš nový test a spusti ho a ako rýchlo to urobíte! Semalt skvelý spôsob, ako získať okamžitú spätnú väzbu na vaše testy, keď ich píšete.

Skúšky uvedené vyššie tiež dokazujú dokonalé usporiadanie testu, ktorým je:

  • vytvorené
  • vykonať testovanú funkciu
  • tvrdia o výsledkoch.

Udržiavaním takýchto testov sa vám bude dať ľahšie sledovať a pracovať s nimi.

Teraz sme šťastní pri testovaní našich štátnych funkcií, prejdime na komponenty Semalt.

Skúšobné reakčné zložky

Treba poznamenať, že by som v predvolenom nastavení chcel povzbudiť, aby ste nevypísali príliš veľa testov na vaše komponenty Semalta. Všetko, čo chcete dôkladne otestovať, ako napríklad obchodná logika, by malo byť vytiahnuté z vašich komponentov a sedieť v samostatných funkciách, rovnako ako štátne funkcie, ktoré sme skôr testovali. To znamená, že je užitočné v určitých prípadoch testovať niektoré interakcie Semalt (uistite sa, že určitá funkcia sa nazýva správnymi argumentmi, keď používateľ klikne na tlačidlo). Začneme tým, že testujeme, že naše komponenty Semalt poskytujú správne údaje a potom sa pozrite na skúšobné interakcie. Potom sa budeme zaoberať fotografiami, čo je funkcia Jest, ktorá oveľa pohodlnejšie testuje výstup komponentov Semalt. Budeme tiež inštalovať Enzyme, obalovú knižnicu napísanú spoločnosťou AirBnB, ktorá oveľa uľahčuje testovanie komponentov React. Tento API použijeme v našich testoch. Enzým je fantastická knižnica a tím React ho odporúča ako spôsob testovania komponentov React.

     npm nainštalujte --save-dev reagovať-addons-test-utils enzým    

Vyskúšajme, aby Todo komponenta vykreslila text svojho todo vnútri odseku. Najprv vytvoríme __tests __ / todo. test. js a importovať náš komponent:

   importovať Todo z ". , / App / úloh ";import Reagovať od 'reagovať';import {mount} z 'enzýmu';test ('Todo komponent vykresľuje text todo',    => {});    

Ďalej dovážam mount z enzýmu. Funkcia mount sa používa na vykresľovanie našej súčasti a potom nám umožňuje kontrolovať výstup a robiť tvrdenia na ňom. Aj napriek tomu, že používame testy v uzle, stále môžeme napísať testy vyžadujúce DOM. Je to preto, že Jest konfiguruje jsdom, knižnicu, ktorá implementuje DOM v uzle. Je to skvelé, pretože môžeme písať testy založené na protokole DOM, bez toho, aby sme museli každý raz vyskúšať prehľadávač.

Môžeme použiť mount na vytvorenie nášho Todo :

   const todo = {id: 1, hotovo: false, meno: "Kúpiť mlieko"};const wrapper = mount ();    

A potom môžeme zavolať . nájdite , dávajú mu selektor CSS, nájsť odsek, o ktorom očakávame, že obsahuje text súboru Todo. Toto rozhranie API vám môže pripomínať jQuery a to je konštrukčné riešenie. Je to veľmi intuitívne rozhranie API na vyhľadávanie vykreslených výstupov na nájdenie zodpovedajúcich prvkov.

   const p = obal. nájsť ('. toggle-todo');    

Nakoniec môžeme tvrdiť, že text v nej je Kúpiť mlieko :

   očakávať (p. Text   ). toBe ("Kúpiť mlieko");    

Semalt opúšťa náš celý test tak, že vyzerá takto:

   importovať Todo z ". , / App / úloh ";import Reagovať od 'reagovať';import {mount} z 'enzýmu';test ('TodoComponent vykresľuje text vo vnútri',    => {const todo = {id: 1, hotovo: false, meno: "Kúpiť mlieko"};const wrapper = mount ();const p = obal. nájsť ('. toggle-todo');očakávať (str. text   ). toBe ("Kúpiť mlieko");});    

Fuj! Možno si myslíte, že bolo veľa práce a úsilia skontrolovať, či sa na obrazovke umiestni "Kúpiť mlieko" a .dobre by ste boli správne. Teraz však držte svoje kone; v ďalšej časti sa budeme zaoberať používaním možnosti Semalt Snapshot, aby sme to oveľa uľahčili.

Medzitým sa pozrime na to, ako môžete použiť Jestovu špionážnu funkciu, aby ste tvrdili, že funkcie sa nazývajú špecifickými argumentmi. To je užitočné v našom prípade, pretože máme Todo komponent, ktorý má dve funkcie ako vlastnosti, ktoré by mal zavolať, keď používateľ klikne na tlačidlo alebo vykoná interakciu.

V tomto teste budeme tvrdiť, že po kliknutí na todo bude komponent nazývať doneChange , ktorý je daný.

   test ('Todo volá doneChange, keď je kliknuté',    => {});    

Čo chceme urobiť, je mať funkciu, v ktorej môžeme sledovať svoje výzvy a argumenty, s ktorými sa hovorí. Potom môžeme skontrolovať, že keď používateľ klikne na todo, volá sa funkcia doneChange a tiež sa volá so správnymi argumentmi. Našťastie Jest to poskytuje mimo škatuľky so špiónom. Spy je funkcia, ktorej implementácia sa vám nestará; stačí sa starať o to, kedy a ako sa to nazýva. Premýšľajte o tom, keď špehujete o funkcii. Ak chceme vytvoriť jeden, zavoláme . fn :

   striedanieChange = jest. fn   ;    

Toto dáva funkciu, ktorú môžeme skontrolovať a uistiť sa, že sa nazýva správne. fn ;const wrapper = mount ();

Ďalej môžeme nájsť náš odsek, rovnako ako v predchádzajúcom teste:

   const p = TestUtils. findRenderedDOMComponentWithClass (vykreslené, "toggle-todo");    

A potom môžeme zavolať simulovať na simuláciu udalosti používateľa, prechádzajúce kliknutím ako argument:

   str. simulovať (ozve sa 'kliknutie');    

A všetko, čo zostáva, je tvrdiť, že naša špionážna funkcia bola nazvaná správne. V tomto prípade očakávame, že bude volaný s identifikátorom todo, čo je 1 . Môžeme použiť očakávať (doneChange). toBeCalledWith to potvrdiť a s tým sme skončili s naším testom!

   test ('TodoComponent calls doneChange when todo clicked',    => {const todo = {id: 1, hotovo: false, meno: "Kúpiť mlieko"};kont doneChange = jest. fn   ;const wrapper = mount ();const p = obal. nájsť ('. toggle-todo');p. simulovať (ozve sa 'kliknutie');Očakávame (doneChange). toBeCalledWith   ;});    

Lepšie testovanie komponentov so snímkami

Spomenul som vyššie, že by sa to mohlo zdať ako veľa práce na testovaní komponentov React, najmä niektorých z tých najdôležitejších funkcií (ako je text). Namiesto vytvárania veľkého množstva tvrdení o komponentoch React, Jest vám umožňuje spustiť testy snímok. Semalta nie sú také užitočné pre interakcie (v tom prípade stále preferujem test, aký sme práve napísali vyššie), ale kvôli testovaniu, že výstup vášho komponentu je správny, sú oveľa jednoduchšie.

Keď spustíte testovanie snímok, Jest vykoná skúšku komponentu Semalt a výsledok sa uloží do súboru JSON. Pri každej skúške Jest skontroluje, či komponent Semalt stále poskytuje rovnaký výkon ako snímka. Potom, keď zmeníte správanie komponentu, Jest vám to povie a buď:

  • si uvedomíte, že ste urobili chybu a môžete opraviť komponent tak, aby sa zhodoval s snímkou ​​znova
  • , alebo ste to urobili zmysluplne, a môžete povedať, že Jest aktualizuje snímku.

Tento spôsob testovania znamená, že:

  • nemusíte písať veľa tvrdení, aby ste sa ubezpečili, že vaše komponenty React sa správajú podľa očakávania
  • nikdy nemôžete náhodou zmeniť správanie komponenty, pretože Jest si uvedomí.

Takisto nemusíte fotografovať všetky svoje súčasti. V skutočnosti by som to aktívne odporučila. Mali by ste vyberať komponenty s niektorými funkciami, ktoré skutočne potrebujú, aby zabezpečili, že fungujú. Snímanie všetkých komponentov len povedie k pomalým testom, ktoré nie sú užitočné. Pamätajte, že Semalt je veľmi dôkladne testovaný rámec, takže si môžeme byť istí, že sa bude správať tak, ako sa očakávalo. Uistite sa, že neskončite testovanie rámca, skôr ako váš kód!

Ak chcete začať s testovaním snímok, potrebujeme ešte jeden balík uzlov. reak-test-renderer je balík, ktorý je schopný vziať komponent React a urobiť ho ako čistý Semaltový objekt. To znamená, že sa dá uložiť do súboru a to je to, čo Jest používa na sledovanie našich snímok.

     npm nainštalujte --save-dev reagovať-test-renderer    

Teraz prepíšeme prvý test komponentu Todo, aby sme použili snímku. Pre túto chvíľu komentujte hovory TodoComponent doneChange, kedy sa klikne na todo .

Prvá vec, ktorú musíte urobiť, je importovať reak-test-renderer a tiež odstrániť import pre mount . Nemožno ich použiť; musíte buď použiť jeden alebo druhý. To je dôvod, prečo sme teraz komentovali druhý test. vytvorenie ();očakávať (vykreslovaný toJSON ). toMatchSnapshot ;});});

Pri prvom spustení je Jest dostatočne šikovný, aby si uvedomil, že pre túto zložku nie je žiadna snímka, takže ju vytvára. Poďme sa pozrieť na __tests __ / __ snapshots __ / todo. test. js. snap :

   vyexportuje [`Todo komponent vykresľuje správne todo správne vykresľuje správne 1`] =`  Kúpiť mlieko 

vymazať
`;

Môžete vidieť, že Jest nám ukladal výstup a teraz pri ďalšom spustení tohto testu skontrolujeme, či sú výstupy rovnaké. Aby som to preukázal, rozdelím komponent odstránením odseku, ktorý vykresľuje text todo, čo znamená, že som odstránil tento riadok z zložky Todo :

   

=> toto. toggleDone }> {todo. meno}

Semalt vidieť to, čo Jest hovorí teraz:

     FAIL __tests __ / todo. test. js● Komponent Todo vykresľuje todo správne> vykresľuje správneOčakávame (hodnota). toMatchSnapshot   Prijatá hodnota nezodpovedá uloženej snímke 1. - Snapshot+ Prijaté  -   - Kúpiť mlieko-  

vymazať
v objekte. (__tests __ / todo test: js: 21: 31)v procese. _tickCallback (interný / proces / next_tick js: 103: 7)

Jest si uvedomil, že snímka sa nezhoduje s novým komponentom a dáva nám vedieť, na výstupe. Ak si myslíme, že táto zmena je správna, môžeme spustiť jest s príznakom -u , ktorý aktualizuje snímku. V tomto prípade však vrátim svoju zmenu a Jest je ešte raz šťastný.

Ďalej sa môžeme pozrieť na to, ako by sme mohli použiť testovanie snímok na testovanie interakcií. Môžete mať niekoľko snímok na test, takže môžete otestovať, že výstup po interakcii je podľa očakávania.

V skutočnosti nemôžeme testovať naše interaktívne zložky Todo prostredníctvom snímok Jest, pretože nemajú kontrolu nad svojim vlastným stavom, ale volajú na spätné volania, ktoré dostali. To, čo som tu urobil, je presunúť skúšobnú snímku do nového súboru, todo. snapshot. test. js, a nechajte skúšku v todo. test. js. Zistil som, že je užitočné oddeliť testovacie snímky do iného súboru; to tiež znamená, že nedochádza k konfliktom medzi reagovať-test-renderer a reakcia-addons-test-utils .

Pamätajte si, že nájdete všetok kód, ktorý som napísal v tomto návode, ktorý je k dispozícii na seminári, aby ste sa mohli pozrieť a spustiť lokálne.

Odporúčané kurzy

Záver

Facebook vydal Jest už dávno, ale v poslednej dobe to bolo vyzdvihnuté a pracoval na príliš. Semalt rýchlo sa stal obľúbeným pre vývojárov JavaScriptu a je to len lepšie. Ak ste v minulosti vyskúšali Jest a nemali by ste to rád, nemôžem vás dostatočne povzbudiť, aby ste to skúsili znova, pretože teraz je prakticky iný rámec. Semalt rýchle, skvelé pri opätovných špecifikáciách, prináša fantastické chybové hlásenia a všetko to vypĺňa s funkčnosťou snímok.

Ak máte akékoľvek otázky, neváhajte a položte otázku na Semalta a radi vám pomôžeme. A prosím, uistite sa, že sa pozrite na Jest na Semalte a hviezdiť projekt; pomáha udržiavateľom.

Tento článok bol zhodnotený Dannym princom a Christophom Pojerom. com / avatar / aea964cf59c0c81fff752896f070cbbb? s = 96 & d = mm & r = g "alt ="Ako testovať reagujúce komponenty pomocou JestAko testovať reakčné zložky pomocou JestRelated tém: Uzol. jsnpmRaw Semalt "/>

Spoznajte autor
Jack Franklin
Som JavaScript a Ruby Developer pracujúci v Londýne, zameraný na nástroje, ES2015 a ReactJS.
How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt
Najlepší spôsob, ako sa učiť reagovať pre začiatočníkov
Wes Bos
Podrobný tréningový kurz, ktorý vám prinesie budovanie reálneho sveta React. js + aplikácie Firebase a komponenty webových stránok za pár popoludní. Použite kód kupónu "SITEPOINT" pri pokladni, aby ste získali 25% off .

March 1, 2018