jest configuration debugging jest based tests
Saznajte o Jest Config-u, otklanjanju pogrešaka i usporedbi Jest-a s drugim JavaScript okvirima za testiranje, posebno Jest vs Mocha & Jest vs Jasmine:
U ovome Informativna serija Jest , istražili smo sve o Testiranje React aplikacija, izrugivanja i špijuna koristeći Jest u našem zadnjem tutorialu.
U ovom uputstvu naučit ćemo više o datotekama Jest Config i vidjeti kako zapravo možete ispraviti pogreške u Jest testovima radi rješavanja problema s jednim ili više testova.
Također ćemo istražiti neke od najčešće korištenih opcija u datoteci Jest Config koje se mogu samostalno postaviti u projektu ili one koje se mogu dodati kao dio same konfiguracije package.json.
Za pisanje Jest testova koristit ćemo Visual Studio Code, a koristili bismo proširenje ili dodatak u VS Codeu kako bismo omogućili podršku za uklanjanje pogrešaka za Jest testove.
Pored toga, usporedit ćemo različite okvire za testiranje Javascripta poput Moke i Jasmine s Jestom i shvatiti međusobne prednosti i nedostatke.
Što ćete naučiti:
Postoji Config
Konfiguracija Jest može se odrediti na 3 načina
- Kroz ključ u datoteci package.json.
- Kroz datoteku jest.config.js - konfiguracijska datoteka napisana kao modul.
- Kroz JSON koji se može koristiti s opcijom kao –config flag.
Uz sve gore navedene pristupe možete postići isti ishod. Pogledajmo prvi korak - tj. Dodavanje Jest konfiguracije putem ključa u datoteci package.json.
U postojeću datoteku package.json dodajte novi ključ nazvan „jest“. Ovo nije ništa drugo nego skup parova ključ / vrijednost u JSON formatu. Sve opcije konfiguracije povezane s Jestom mogu se dalje dodati ovom odjeljku u datoteci package.json.
dobar besplatni glazbeni downloader za android
U nastavku su navedene najčešće korištene opcije konfiguracije.
# 1) Povezanost
collectCoverage, охватThreshold, охватReporteri, prekrivačDirektorij - To su najčešće korištene opcije. Pokrivenost je važna metrika i osigurava testiranje koda prema unaprijed zadanom pragu.
Detaljno objašnjenje svakog od njih je kako slijedi:
# 1) collectCoverage: Ova se opcija koristi za određivanje želimo li da testni pokretač Jest prikuplja podatke o pokrivenosti ili ne. Kad se postavi na true, trkač Jest prikuplja podatke o pokrivenosti. Ovom opcijom pokrivenost će se prikupiti i prikazati na konzoli na kraju izvođenja testa, kao što je prikazano u nastavku.
# 2) Prag pokrivenosti: Ova postavka omogućuje nam da odredimo vrijednosti praga za pokrivenost u postocima. To je od velike pomoći kada se organizacija ili tim želi pridržavati određene minimalne vrijednosti pokrića bez koje se nijedan kôd ne može gurnuti ili spojiti u glavnu granu.
Pogledajmo kako se to može koristiti.
Pokrivenost se može odrediti na globalnoj razini, na razini datoteke ili bilo kojem drugom regularnom izrazu. Kada se navede na globalnoj razini, svi navedeni pragovi trebaju se podudarati za kombinirane sve datoteke u projektu.
'coverageThreshold': { 'global': { 'branches':95, 'functions':100, 'lines':70, 'statements':-2 } }
Određivanje pokrivenosti na razini datoteke također je moguće, promjenom 'globalno' u naziv datoteke ili regularni izraz. Konfiguracije praga mogu se razlikovati ovisno o zahtjevu.
'coverageThreshold': { './src/calculator.js': { 'branches':100, 'functions':100, 'lines':100, 'statements':-10 } }
# 3) izvještači: Ova se konfiguracija koristi za određivanje izvješćivača kojeg biste željeli koristiti za generiranje izvještaja o pokrivenosti. Postoji mnogo postojećih izvjestitelja kao dostupnih NPM paketa koji se mogu koristiti za generiranje izvještaja o pokrivenosti na kraju izvršenja testa.
# 4) Imenik pokrivenosti: Ova postavka omogućuje korisniku da navede direktorij u kojem će izvješća o pokrivenosti biti spremljena ili zadržana nakon izrade.
Slijedi kombinirani primjer korištenja svih konfiguracijskih postavki povezanih s pokrivenošću.
'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/' }
Ovdje smo koristili 2 izvjestitelja o pokrivanju, tj. Lcov i text.Lcov je pokrivenost linije Linuxa i prisutna je prema zadanim postavkama, a izvještač 'text' znači da će izlaz pokrivenosti biti prikazan i na konzoli. Izvještaj o pokrivenosti generirat će se na putu navedenom u postavci 'покрыvanjeDirektorij'.
# 2) Povezano s ismijavanjem
Ismijavanje se intenzivno koristi tijekom testiranja s Jestom. Obje opcije konfiguracije u nastavku omogućuju jednostavno konfiguriranje i uklanjanje lažnih podataka.
- autoMocks: Kada se postavi na true, ovo će se rugati svim modulima koji su zadani u testu.
- clearMocks: Ako se postavi na true, ovo će obrisati sve ismijane postavke / module nakon svakog testa, tako da svako testiranje započinje sa svježim stanjem. To se također može postići pomoću testCleanup ili metodom 'after', ali ako je imate u konfiguraciji, to je još lakše.
# 3) Povezani testovi
# 1) testTimeout: Ova se konfiguracija koristi za postavljanje tvrdog vremenskog ograničenja za testove u milisekundama. Bilo koji test koji pređe više od ovog konfiguriranog praga bit će označen kao neuspješan zbog iznimke vremenskog ograničenja.
'jest' { 'testTimeout': 100 }
# 2) Globalno: Ova se konfiguracija koristi za postavljanje globalnih varijabli koje bi trebale biti dostupne uz svaki test.
'jest' { 'globals': { 'globalVar': 'test global variable!' } }
Pokušajmo upotrijebiti globalnu varijablu u testu i provjeriti radi li ona prema očekivanjima.
describe('Calculator tests', () => { test('add 2 numbers', () => { // arrange & act const val = mathOps.sum(3,4) console.log(globalVar) // assert expect(val).toBe(7) })
Nakon izvođenja ovog testa, vrijednost globalVar treba biti zabilježena.
Ček ovdje za iscrpan popis svih opcija konfiguracije.
Video vodič za konfiguraciju IS-a
Otklanjanje pogrešaka pomoću Jest-a
U ovom ćemo odjeljku pokušati razumjeti kako možemo ispraviti testove napisane na temelju Jest-a.
Primijenit ćemo i razumjeti 2 različita načina na koje možemo ispraviti Jest testove.
- Izvorni program za ispravljanje pogrešaka Node, a zatim pomoću Chrome Inspektora za otklanjanje pogrešaka u testovima.
- Upotreba konfiguracije za otklanjanje pogrešaka Visual Studio Code-a za otklanjanje pogrešaka u testovima u samom uređivaču Visual Studio Code. Ovo je najčešće korišten način otklanjanja pogrešaka jer je Visual Studio Code zadani uređivač koji odabire za većinu razvoja Javascripta ovih dana.
Svaki od ovih pristupa detaljno je objašnjen u nastavku.
# 1) Korištenje Nodeova matičnog programa za ispravljanje pogrešaka
Da bismo koristili izvorni program za ispravljanje pogrešaka Node JS, u test moramo umetnuti ključnu riječ 'program za otklanjanje pogrešaka', gdje želimo postaviti točku prekida.
Jednom kada izvršitelj testa naiđe na program za ispravljanje pogrešaka naredba zaustavlja izvršavanje, a ako priložimo alate za otklanjanje pogrešaka kroma, tada možemo otkloniti pogreške u testnom kodu (kao i funkciji koja se testira) pomoću Chrome alata.
Preglednik Chrome ovdje je preduvjet za korištenje Node-ovog Native Debugger-a.
Slijedite korake u nastavku.
# 1) Dodajte ključnu riječ za otklanjanje pogrešaka u test, tj. Na mjestu na kojem želite da test pogodi točku prekida, umetnite naredbu 'otklanjanje pogrešaka'
#dva) Izvršite test pomoću oznake –inspect-brk.
Upotrijebite donju naredbu za izvršavanje testa u načinu prekida.
/usr/local/bin/node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand
# 3) Pričvrstite program za ispravljanje pogrešaka čvora u Chromeu. Sada u pregledniku Chrome idite na chrome: // inspect i povežite se s ciljnim slušateljem koji je stvoren gornjim korakom.
# 4) Nastavite s izvršavanjem i vidjet ćete da točka prekida pogađa inspektor za otklanjanje pogrešaka kroma i možete otkloniti pogreške u stacku poziva i stanju objekta u samom chrome debuggeru.
Ovaj pristup ispravljanju pogrešaka u Jest testovima je u redu, ali nije vrlo koristan za upotrebu jer se morate stalno prebacivati s uređivača koda na Chrome i obrnuto što uzrokuje puno trenja. U nadolazećem odjeljku vidjet ćemo načine konfiguriranja programa za otklanjanje pogrešaka u samom uređivaču Visual Studio Code.
# 2) Korištenje konfiguracije za otklanjanje pogrešaka VS koda
# 1) Odaberite odjeljak Otklanjanje pogrešaka / pokretanje Visual Studio koda na lijevoj ploči.
#dva) Sada ćemo ažurirati konfiguraciju za uklanjanje pogrešaka za testove šale. Da biste to učinili, dodajte novu konfiguraciju odabirom opcije izbornika.
# 3) Jednom kada je odabrana opcija dodavanja konfiguracije, otvorit će datoteku `launch.json` sa zadanim sadržajem u oknu uređivača. Uklonite zadani sadržaj i kopirajte sadržaj u nastavku za stvaranje konfiguracije za uklanjanje pogrešaka za Jest testove.
{ '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) Spremite novo dodanu konfiguraciju sadržaja koja će se koristiti za ispravljanje pogrešaka Jest testova. Ako pažljivo pročitate konfiguraciju, slično je onome što smo učinili kada smo se naredbom pokušali povezati s programom za ispravljanje pogrešaka Node u alatima za Chrome Developer.
--inspect-brk ./node_modules/jest/bin/jest.js --runInBand
Prednost postojanja ovdje konfiguracije je u tome što će se testovi izvoditi / otklanjati pogreške kao dio samog uređivača (u ovom slučaju to je VSCode) i ne trebamo se povezivati s bilo kojom vanjskom aplikacijom.
# 5) Jednom kada se kreira konfiguracija za otklanjanje pogrešaka, sada testovima možete dodati točke prekida i izvršiti pomoću ove RUN konfiguracije. To će osigurati da se test zaustavi na točkama prekida i da možete ispraviti vrijednosti, stanje objekta na točki prekida u stvarnoj datoteci testa.
Točke prekida mogu se dodati klikom blizu brojeva redaka u datotekama koda.
# 6) Jednom kad se doda tačka prekida, možemo odabrati konfiguraciju Pokreni koju smo dodali u koraku # 3 kako bismo izvršili / otklonili pogreške u testu.
# 7) Nakon odabira / klika na gumb Run, trebali biste vidjeti da izvršenje pogađa točku prekida koja je postavljena i možete dobiti više detalja kao što su vrijednosti okoline / varijable, trag stoga itd. Na točki prekida.
Gumbi za kontrolu prekida / protoka koda mogu se koristiti za pomicanje na sljedeću točku prekida ili za kretanje unutar funkcije za više detalja.
Video tutorial ON JEOtklanjanje pogrešaka
Tu je Mocha protiv Jasmine
U nastavku ćemo usporediti Jest vs Mocha i Jest vs Jasmine na različitim parametrima i usporedbe značajki poput Snapshot testiranja, jednostavnosti konfiguracije i mogućnosti različitih okvira.
Parametar | Je | Moka | Jasmin |
---|---|---|---|
Podržane vrste ispitivanja | Uglavnom se koristi za jedinično testiranje. | Jedinstveno ispitivanje | Jedinstveno ispitivanje i E2E ispitivanje. |
Snapshot testiranje | Potpuno podržano - Jest, posebno korišten za komponente React, podržava izradu snimki komponente i njezinu upotrebu za usporedbu rezultata ispitivanja sa spremljenom strukturom komponente. Snimke su izvrstan način da osigurate da se korisničko sučelje ne mijenja neočekivano. | Bez podrške | Bez podrške |
Tvrdnje i podudarnosti | Za podudaranje upotrijebite knjižnicu awa.js. | Podrška za Nodeov ugrađeni modul za utvrđivanje, a može uključivati i druge knjižnice tvrdnji. | U izgrađenim tvrdnjama |
Ruganje | Potpuno izgrađen kao podrška za Mocks and Stubs u Jestu. | Nema ugrađene potpore za ruganje ili trljanje. Može se koristiti s drugim knjižnicama kao što je Sinon za podršku ismijavanju. | Ugrađena ograničena podrška pomoću špijuna. Može se integrirati s drugim knjižnicama. |
Brzina izvršenja | 4x Jest testovi izolirani su u vlastitom pješčaniku. Stoga se Jestovi testovi u osnovi odvijaju paralelno zbog čega pružaju znatno poboljšanje vremena izvršenja. | x Ne podržava paralelno izvršavanje testova. | x Ne podržava paralelno izvršavanje testova. |
Konfiguracija i postavljanje | Vrlo jednostavno - potrebna je nulta konfiguracija. | ||
Način izvođenja testa | Bezglav | Bezglav | Bezglav |
Izlaz i kontekst testa | Generira obogaćeni kontekst nakon izvršenja - Jest pruža detaljan testni kontekst kako bi se duboko ušlo u ono što je uzrokovalo kvar, osiguravajući tako lako uklanjanje pogrešaka. | Rezultat testa nije baš čitljiv i otklanjanje pogrešaka čini malo izazovnim. | |
Otklanjanje pogrešaka | Podrška za matične programe za otklanjanje pogrešaka Node također se može koristiti za uklanjanje pogrešaka unutar uređivača poput Visual Studio Code-a putem zasebne konfiguracije pokretanja. | Podržava izvorni program za ispravljanje pogrešaka Node. | Može koristiti karma test trkač za pokretanje testova u Chromeu i otklanjanje pogrešaka. |
Pokrivenost kodom | Jest ima ugrađenu podršku za pokrivanje koda. Konfiguracija pokrivenosti može se navesti u Jest konfiguraciji, a izvješća se mogu generirati sa svakim izvršavanjem testa. | Nema ugrađene podrške. Pruža podršku vanjskim knjižnicama za generiranje izvještaja o pokrivenosti. | Isto kao i Mocha |
Stil testiranja | BDD Sva tri okvira podržavaju testove koji će biti napisani kao skup specifikacija ili specifikacija što ih čini čitljivijima. | BDD | BDD |
Zaključak
U ovom smo tutorijalu saznali o različitim načinima na koje možete ispraviti pogreške u Jest testovima unutar Visual Studio koda ili u pregledniku Chrome pomoću matičnog programa za otklanjanje pogrešaka Node-a.
Također smo istražili najčešće korištene opcije konfiguracije u konfiguracijskoj datoteci Jest. Konfiguracija Jest pomaže postići puno stvari poput pokrivanja koda, HTML izvješća, postavljanje lažnog ponašanja, postavljanje globalnih varijabli itd.
Preporučena literatura
- Vodič za Jest - JavaScript jedinično testiranje pomoću Jest Framework-a
- Kako testirati reagirajuće aplikacije pomoću Jest Framework-a
- Jasmine Framework Tutorial Uključujući Jasmine Jquery sa primjerima
- Distribuirane građe: Jenkinsova glavna konfiguracija robova
- Tehnike otklanjanja pogrešaka u selenu: točke prekida, način otklanjanja pogrešaka i više
- Vodič za ispitivanje konfiguracije s primjerima
- Kako postaviti okvir za testiranje Node.js: Vodič za Node.js
- 25 najboljih Java okvira za testiranje i alata za automatizaciju (3. dio)