jest configuration debugging jest based tests
Spoznajte Jest Config, odpravljanje napak in primerjavo Jest z drugimi okviri za testiranje JavaScript, posebej Jest vs Mocha & Jest vs Jasmine:
V tem Informativna serija Jest , smo raziskovali vse okoli Testiranje React aplikacij, posmehov in vohunov z uporabo Jest v naši zadnji vadnici.
V tej vadnici bomo izvedeli več o datotekah Jest Config in si ogledali, kako lahko dejansko odpravite napake Jest testov za odpravljanje težav z enim ali več preizkusi.
Preučili bomo tudi nekatere najpogosteje uporabljene možnosti v datoteki Jest Config, ki jih je mogoče v projektu nastaviti samostojno, ali tiste, ki jih je mogoče dodati kot del same konfiguracije package.json.
Za pisanje testov Jest bomo uporabljali Visual Studio Code, za razširitev napak pa bi uporabili razširitev ali vtičnik VS Code.
Poleg tega bomo primerjali različne okvire za preizkušanje Javascripta, kot sta Mocha in Jasmine, z Jestom in razumeli prednosti in slabosti drug drugega.
Kaj se boste naučili:
Obstaja Config
Konfiguracijo Jest lahko določite na 3 načine
- Skozi ključ v datoteki package.json.
- Skozi datoteko jest.config.js - konfiguracijska datoteka, napisana kot modul.
- Skozi JSON, ki bi ga lahko uporabili z možnostjo –config flag.
Z vsemi zgoraj navedenimi pristopi lahko dosežete enak izid. Poglejmo prvi korak - tj. Dodajanje konfiguracije Jest s ključem v datoteki package.json.
V obstoječo datoteko package.json dodajte nov ključ z imenom »jest«. To ni nič drugega kot nabor parov ključ-vrednost v obliki JSON. Vse možnosti konfiguracije, povezane z Jestom, je mogoče nadalje dodati v ta razdelek v datoteki package.json.
Spodaj so navedene najpogosteje uporabljene možnosti konfiguracije.
# 1) Povezanost
collectCoverage, pokrivanjePrag, pokritostReporterji, pokritostDirectory - To so najpogosteje uporabljene možnosti. Pokritost je pomembna metrika in zagotavlja, da je koda preizkušena glede na vnaprej določen prag.
Podrobna razlaga vsakega od njih je naslednja:
# 1) collectCoverage: Ta možnost se uporablja za določanje, ali želimo, da Jest testni tekač zbira informacije o pokritosti ali ne. Ko je nastavljeno na true, tekač Jest zbira informacije o pokritosti. S to možnostjo bo pokritost zbrana in prikazana na konzoli na koncu preizkusa, kot je prikazano spodaj.
# 2) Prag pokritosti: Ta nastavitev nam omogoča, da določimo mejne vrednosti za pokritost v odstotkih. To je zelo koristno, kadar se organizacija ali ekipa želi držati določene minimalne vrednosti pokritosti, brez katere nobene kode ni mogoče potisniti ali združiti v glavno vejo.
Poglejmo, kako je to mogoče uporabiti.
Pokritost lahko določite na globalni ravni, na ravni datotek ali katerega koli drugega regularnega izraza. Ko je podan na globalni ravni, bi se moral vsi navedeni prag ujemati za kombinirane vse datoteke v projektu.
'coverageThreshold': { 'global': { 'branches':95, 'functions':100, 'lines':70, 'statements':-2 } }
Možno je tudi določiti pokritost na ravni datoteke, tako da spremenite »globalno« v ime datoteke ali regularni izraz. Konfiguracije pragov se lahko razlikujejo glede na potrebe.
'coverageThreshold': { './src/calculator.js': { 'branches':100, 'functions':100, 'lines':100, 'statements':-10 } }
# 3) poročanje Poročevalci: Ta konfiguracija se uporablja za določanje poročevalca, ki ga želite uporabiti za ustvarjanje poročila o pokritosti. Obstaja veliko obstoječih poročevalcev kot razpoložljivih paketov NPM, ki bi jih lahko uporabili za izdelavo poročila o pokritosti na koncu izvajanja testa.
# 4) Pokritost Imenik: Ta nastavitev omogoča uporabniku, da določi imenik, kamor naj se poročila o pokritosti shranijo ali ohranijo po ustvarjanju.
Spodaj je kombiniran primer uporabe vseh nastavitev konfiguracije, povezanih s pokritostjo.
'jest':{ 'collectCoverage':true, 'coverageThreshold': { 'global': { 'branches':95, 'functions':100, 'lines':70, 'statements':-2 }, './src/calculator.js': { 'branches':100, 'functions':100, 'lines':100, 'statements':-10 } }, 'coverageReporters': ( 'lcov','text' ), 'coverageDirectory': './output/code-coverage/' }
Tu smo uporabili dva poročevalca pokritosti, tj. Lcov in text. Lcov je pokritost Linuove linije in je privzeto prisoten, poročevalec 'text' pa pomeni, da bo izhodni obseg prikazan tudi na konzoli. Poročilo o pokritosti se bo ustvarilo na poti, določeni v nastavitvi »pokritostDirectory«.
# 2) Mock Related
Med preskušanjem z Jestom se pogosto uporabljajo posmehi. Obe spodnji konfiguracijski možnosti omogočata enostavno konfiguracijo in odstranjevanje posmehov.
- autoMocks: Če je nastavljeno na true, se s tem privzeto posmehujejo vsi moduli, ki so uvoženi v testu.
- clearMocks: Če je nastavljeno na true, bo to pobrišalo vse posmehljive nastavitve / module po vsakem preskusu, tako da se bo vsak test začel v novem stanju. To je mogoče doseči tudi z uporabo testCleanup ali metode 'after', vendar je to v konfiguraciji še lažje.
# 3) Sorodni testi
# 1) testTimeout: Ta konfiguracija se uporablja za nastavitev časovne omejitve za teste v milisekundah. Vsak preizkus, ki bo opravil več kot ta nastavljeni prag, bo zaradi izjeme časovne omejitve označen kot neuspešen.
'jest' { 'testTimeout': 100 }
# 2) Globalno: Ta konfiguracija se uporablja za nastavitev globalnih spremenljivk, ki naj bodo na voljo pri vsakem preizkusu.
'jest' { 'globals': { 'globalVar': 'test global variable!' } }
Poskusimo v preizkusu uporabiti globalno spremenljivko in preverimo, ali deluje po pričakovanjih.
describe('Calculator tests', () => { test('add 2 numbers', () => { // arrange & act const val = mathOps.sum(3,4) console.log(globalVar) // assert expect(val).toBe(7) })
Po izvedbi tega testa je treba zapisati vrednost globalVar.
Preveri tukaj za izčrpen seznam vseh možnosti konfiguracije.
Video vadnica o konfiguraciji IS
Odpravljanje napak z uporabo Jest
V tem poglavju bomo poskušali razumeti, kako lahko odpravljamo napake na testih, napisanih na podlagi Jesta.
Uporabili in razumeli bomo dva različna načina za razhroščevanje testov Jest.
- Izvorni razhroščevalec vozlišča in nato za odpravljanje napak s pomočjo Chrome Inspectorja.
- Uporaba konfiguracije za odpravljanje napak Visual Studio Code za razhroščevanje testov v urejevalniku Visual Studio Code. To je najpogosteje uporabljen način odpravljanja napak, saj je Visual Studio Code privzeti urejevalnik za večino razvoja Javascripta danes.
Vsak od teh pristopov je podrobno razložen spodaj.
# 1) Uporaba Node-jevega nativnega razhroščevalnika
Če želite uporabiti izvorni razhroščevalec Node JS, moramo v test vstaviti ključno besedo 'razhroščevalnik', kamor želimo postaviti točko prekinitve.
Ko izvajalec testa naleti na razhroščevalec ukaz zaustavi izvajanje in če priložimo orodja za razhroščevanje chrome, lahko s pomočjo orodij Chrome odpravimo napake v testno kodo (kot tudi v funkcijo, ki jo preizkušamo).
Brskalnik Chrome je tukaj predpogoj za uporabo izvornega razhroščevalnika Node.
Sledite spodnjim korakom.
# 1) Dodajte ključno besedo razhroščevalnika v test, tj. Na točko, kjer želite, da test doseže točko prekinitve, vstavite ukaz »razhroščevalnik«
#two) Preizkus izvedite z zastavico –inspect-brk.
Uporabite spodnji ukaz za izvedbo testa v načinu točke preloma.
/usr/local/bin/node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand
# 3) Priključite razhroščevalec vozlišča v Chrome. Zdaj v brskalniku Chrome pojdite na chrome: // preglejte in se povežite s ciljnim poslušalcem, ki ga je ustvaril zgornji korak.
# 4) Nadaljujte z izvajanjem in videli boste, da prekinitvena točka zadene v pregledovalniku napak chrome in lahko odpravite napake v stacku klicev in stanju predmeta v samem chrome razhroščevalniku.
dvojno povezan seznam c ++ vstavi
Ta pristop razhroščevanja testov Jest je v redu, vendar ne zelo prijazen do uporabnika, saj morate nenehno prehajati z urejevalnika kod na Chrome in obratno, kar povzroča veliko trenja. V prihajajočem razdelku bomo videli načine konfiguriranja razhroščevalnika v samem urejevalniku Visual Studio Code.
# 2) Uporaba konfiguracije za odpravljanje napak kode VS
# 1) Na levi plošči izberite odsek za odpravljanje napak / zagon kode Visual Studio.
#two) Zdaj bomo posodobili konfiguracijo za odpravljanje napak za teste šale. Če želite to narediti, dodajte novo konfiguracijo z izbiro možnosti menija.
# 3) Ko je izbrana možnost dodajanja konfiguracije, bo v podoknu urejevalnika odprla datoteko `launch.json` s privzeto vsebino. Odstranite privzeto vsebino in kopirajte spodnjo vsebino za ustvarjanje konfiguracije za odpravljanje napak za teste Jest.
{ 'version': '0.2.0', 'configurations': ( { 'name': 'Debug Jest Tests', 'type': 'node', 'request': 'launch', 'runtimeArgs': ( '--inspect-brk', '${workspaceRoot}/node_modules/jest/bin/jest.js', '--runInBand' ), 'console': 'integratedTerminal', 'internalConsoleOptions': 'neverOpen', 'port': 9229 } ) }
# 4) Shranite novo dodano konfiguracijo vsebine, ki bi bila uporabljena za razhroščevanje testov Jest. Če natančno preberete konfiguracijo, je to podobno tistemu, kar smo storili, ko smo se z orodjem za razvijalce Chroma v orodjih za razvijalce Chroma povezali z razhroščevalnikom Node.
--inspect-brk ./node_modules/jest/bin/jest.js --runInBand
Prednost nastavitve tukaj je, da se bodo testi izvajali / odpravljali napake kot del samega urejevalnika (v tem primeru je to VSCode) in se nam ni treba povezati z nobeno zunanjo aplikacijo.
# 5) Ko je konfiguracija za odpravljanje napak ustvarjena, lahko zdaj testnim točkam dodate mejne točke in izvedete s to konfiguracijo RUN. To bo zagotovilo, da se preizkus ustavi na točkah prekinitve in da lahko v dejanski testni datoteki odpravite napake v vrednostih in stanju predmeta na točki preloma.
Mejne vrednosti lahko dodate s klikom na številke vrstic v kodnih datotekah.
# 6) Ko je dodana mejna točka, lahko izberemo konfiguracijo Run, ki smo jo dodali v 3. koraku, da izvedemo / odpravimo napake v testu.
# 7) Ko izberete / kliknete gumb Zaženi, boste lahko videli, da izvedba zadene točko prekinitve, ki ste jo postavili, in lahko dobite več podrobnosti, kot so vrednosti okolja / spremenljivke, sled sklada itd.
Z gumbi za nadzor pretoka točke / kode lahko uporabite za premik na naslednjo točko prekinitve ali za več podrobnosti v funkciji.
Video vadnica JEOdpravljanje napak
Obstaja Mocha Vs Jasmine
V spodnjem razdelku bomo primerjali Jest proti Mocha in Jest proti Jasmine za različne parametre in primerjave funkcij, kot so preskus posnetkov, enostavnost konfiguracije in zmogljivosti različnih okvirov.
Parameter | Je | Mocha | Jasmin |
---|---|---|---|
Podprte vrste preskušanja | Večinoma se uporablja za enotno testiranje. | Enotno testiranje | Enotno testiranje in testiranje E2E. |
Preskus posnetka | Popolnoma podprt - Jest, ki se posebej uporablja za komponente React, podpira snemanje komponent in njihovo uporabo za primerjavo preizkusnih rezultatov s shranjeno strukturo komponent. Posnetki so odličen način za zagotovitev, da se uporabniški vmesniki ne bodo nepričakovano spremenili. | Ni podpore | Ni podpore |
Trditve in ujemanja | Za ujemanje uporabite knjižnico awa.js. | Podpora za Node-ov vgrajeni modul za uveljavljanje in lahko vključuje tudi druge knjižnice trditev. | V vgrajenih trditvah |
Posmehovanje | Popolnoma zgrajena kot podpora za Mocks and Stubs v Jestu. | Ni vgrajene podpore za posmehovanje ali trkanje. Lahko se uporablja z drugimi knjižnicami, kot je Sinon, za podporo posmehu. | Vgrajena omejena podpora z uporabo spyOn. Lahko se integrira z drugimi knjižnicami. |
Hitrost izvedbe | 4x Jest testi so izolirani v lastnem peskovniku. Tako se Jestovi testi v bistvu izvajajo vzporedno, zaradi česar zagotavljajo znatno izboljšanje časa izvedbe. | x Ne podpira vzporednega izvajanja testov. | x Ne podpira vzporednega izvajanja testov. |
Konfiguracija in namestitev | Zelo enostavno - potrebna je nič konfiguracija. | ||
Način izvedbe testa | Brez glave | Brez glave | Brez glave |
Preskusni izhod in kontekst | Ustvari bogat kontekst po izvedbi - Jest ponuja podroben testni kontekst, da se poglobi v tisto, kar je povzročilo napako, s čimer zagotovi enostavno odpravljanje napak. | Testni izhod ni zelo berljiv in naredi razhroščevanje nekoliko zahtevno. | |
Odpravljanje napak | Podpora za izvorne razhroščevalnike Node se lahko uporablja tudi za odpravljanje napak znotraj urejevalnikov, kot je Visual Studio Code, z ločeno konfiguracijo zagona. | Podpira izvorni razhroščevalec Node. | Lahko uporablja karma test runner za zagon testov v Chromu in odpravljanje napak. |
Pokritost kode | Jest ima vgrajeno podporo za pokritost kode. Konfiguracijo pokritosti lahko določite v konfiguraciji Jest in poročila lahko generirate z vsakim izvajanjem testa. | Brez vgrajene podpore. Ponuja podporo zunanjim knjižnicam za ustvarjanje poročil o pokritosti. | Enako kot Mocha |
Slog testiranja | BDD Vsi trije okviri podpirajo teste, ki so napisani kot sklop specifikacij ali specifikacij, zaradi katerih so bolj berljivi. | BDD | BDD |
Zaključek
V tej vadnici smo se seznanili z različnimi načini, na katere lahko odpravljate napake pri testih Jest v kodi Visual Studio ali v pregledovalniku Chrome z uporabo izvornega odpravljalca težav Node.
Raziskali smo tudi pogosto uporabljene konfiguracijske možnosti v konfiguracijski datoteki Jest. Konfiguracija Jest pomaga doseči veliko stvari, kot so pokritost kode, poročila HTML, nastavitev lažnega vedenja, nastavitev globalnih spremenljivk itd.
Priporočeno branje
- Vadnica za Jest - Testiranje enote JavaScript z uporabo okvira Jest
- Kako preizkusiti aplikacije React z uporabo okvira Jest
- Jasmin Framework Tutorial, ki vključuje Jasmine Jquery s primeri
- Porazdeljene gradnje: Jenkinsova glavna konfiguracija sužnja
- Tehnike odpravljanja napak v selenu: mejne točke, način odpravljanja napak in še več
- Vadnica za preizkušanje konfiguracije s primeri
- Kako nastaviti Node.js preskusno ogrodje: Vadnica za Node.js
- 25 najboljših okvirov in orodij za testiranje Java (3. del)