jest configuration debugging jest based tests
Zjistěte více o Jest Config, Debugging a porovnání Jest s jinými rámci testování JavaScriptu, konkrétně Jest vs Mocha & Jest vs Jasmine:
V tomhle Informační série Jest , prozkoumali jsme vše kolem Testování reakce aplikací, simulantů a špiónů pomocí Jest v našem posledním tutoriálu.
V tomto kurzu se dozvíme více o souborech Jest Config a uvidíme, jak můžete ve skutečnosti ladit testy Jest pro řešení potíží s jedním nebo více více testy.
Prozkoumáme také některé z běžně používaných možností v souboru Jest Config, které lze v projektu nastavit samostatně, nebo ty, které lze přidat jako součást samotné konfigurace package.json.
K psaní našich testů Jest budeme používat Visual Studio Code a použijeme rozšíření nebo plugin ve VS Code k povolení podpory ladění pro testy Jest.
Kromě toho porovnáme různé rámce pro testování Javascriptů, jako jsou Mocha a Jasmine, s Jestem a pochopíme jejich výhody a nevýhody.
Co se naučíte:
životní cyklus závady v testování softwaru
Existuje Config
Konfiguraci Jest lze specifikovat 3 způsoby
- Prostřednictvím klíče v souboru package.json.
- Prostřednictvím souboru jest.config.js - konfigurační soubor zapsaný jako modul.
- Prostřednictvím JSON, který lze použít s možností jako příznak –config.
Se všemi výše uvedenými přístupy můžete dosáhnout stejného výsledku. Podívejme se na první krok - tj. Přidání konfigurace Jest pomocí klíče v souboru package.json.
V existujícím souboru package.json přidejte nový klíč s názvem „jest“. Není to nic jiného než sada párů klíč – hodnota ve formátu JSON. Všechny možnosti konfigurace týkající se Jest lze dále přidat do této sekce v souboru package.json.
Níže jsou uvedeny nejčastěji používané možnosti konfigurace.
# 1) Související s pokrytím
collectCoverage, coverageThreshold, coverageReporters, coverageDirectory - Toto jsou nejčastěji používané možnosti. Pokrytí je důležitá metrika a zajišťuje, že je kód testován na přednastavenou prahovou hodnotu.
Podrobné vysvětlení každého z nich je následující:
# 1) collectCoverage: Tato možnost se používá k určení, zda chceme, aby testovací běžec Jest shromažďoval informace o pokrytí nebo ne. Když je nastavena na hodnotu true, běžec Jest shromažďuje informace o pokrytí. S touto možností bude pokrytí shromážděno a zobrazeno na konzole na konci provádění testu, jak je uvedeno níže.
# 2) coverageThreshold: Toto nastavení nám umožňuje určit prahové hodnoty pro pokrytí v procentech. To je velmi užitečné, když chce organizace nebo tým dodržovat určitou minimální hodnotu pokrytí, bez níž nelze žádný kód posunout nebo sloučit do hlavní větve.
Podívejme se, jak to lze použít.
Pokrytí lze určit na globální úrovni, úrovni souborů nebo jakémkoli jiném regulárním výrazu. Pokud je zadán na globální úrovni, všechny zadané prahové hodnoty by měly odpovídat kombinovaným všem souborům v projektu.
'coverageThreshold': { 'global': { 'branches':95, 'functions':100, 'lines':70, 'statements':-2 } }
Je také možné zadat pokrytí na úrovni souboru změnou „globálního“ na název souboru nebo regex. Konfigurace prahových hodnot se mohou lišit v závislosti na požadavku.
'coverageThreshold': { './src/calculator.js': { 'branches':100, 'functions':100, 'lines':100, 'statements':-10 } }
# 3) reportéři pokrytí: Tato konfigurace slouží k určení, jaký reportér chcete použít k vygenerování zprávy o pokrytí. Existuje spousta existujících reportérů jako balíčky NPM, které lze použít ke generování zprávy o pokrytí na konci provádění testu.
# 4) adresář pokrytí: Toto nastavení umožňuje uživateli určit adresář, kam by se zprávy o pokrytí měly uložit nebo přetrvávat po vytvoření.
Níže je uveden kombinovaný příklad použití všech nastavení konfigurace souvisejících s pokrytím.
'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/' }
Zde jsme použili 2 reportéry pokrytí, tj. Lcov a text. Lcov je liniové pokrytí Linuxu a je ve výchozím nastavení přítomno a reportér „text“ znamená, že výstup pokrytí bude zobrazen také na konzole. Zpráva o pokrytí bude vygenerována cestou zadanou v nastavení „coverageDirectory“.
# 2) Mock související
Během testování s Jestem se často používají makety. Obě níže uvedené možnosti konfigurace umožňují snadnou konfiguraci a odstranění falešných zpráv.
- autoMocks: Pokud je nastavena na hodnotu true, budou se ve výchozím nastavení zesměšňovat všechny moduly, které jsou importovány v testu.
- clearMocks: Pokud je nastavena na hodnotu true, vymaže se po každém testu všechny zesměšňované instalační programy / moduly, takže každý test začíná novým stavem. Toho lze dosáhnout také metodou testCleanup nebo „after“, ale mít ji v konfiguraci to ještě usnadňuje.
# 3) Související testy
# 1) testTimeout: Tato konfigurace se používá k zajištění tvrdého časového limitu pro testy v milisekundách. Jakýkoli test, který trvá déle než tato nakonfigurovaná prahová hodnota, bude označen jako neúspěšný kvůli výjimce časového limitu.
'jest' { 'testTimeout': 100 }
# 2) Globální: Tato konfigurace se používá k nastavení globálních proměnných, které by měly být k dispozici při každém testu.
'jest' { 'globals': { 'globalVar': 'test global variable!' } }
Zkusme v testu použít globální proměnnou a podívejme se, zda funguje podle očekávání.
describe('Calculator tests', () => { test('add 2 numbers', () => { // arrange & act const val = mathOps.sum(3,4) console.log(globalVar) // assert expect(val).toBe(7) })
Po provedení tohoto testu by měla být zaznamenána hodnota globalVar.
Šek tady pro vyčerpávající seznam všech možností konfigurace.
Výukový program o konfiguraci IS
Ladění pomocí Jest
V této části se pokusíme pochopit, jak můžeme ladit testy napsané na základě Jest.
Použijeme a pochopíme 2 různé způsoby, jak můžeme ladit testy Jest.
- Nativní ladicí program Node a poté k ladění testů pomocí nástroje Chrome Inspector.
- Pomocí ladicí konfigurace Visual Studio Code k ladění testů v samotném editoru Visual Studio Code. Toto je nejčastěji používaný způsob ladění, protože Visual Studio Code je výchozí editor výběru pro většinu vývoje Javascript v těchto dnech.
Každý z těchto přístupů je podrobně vysvětlen níže.
# 1) Používání nativního ladicího programu Node
Abychom mohli použít nativní debugger Node JS, musíme do testu vložit klíčové slovo „debugger“, kam chceme umístit zarážku.
Jakmile zkušební exekutor narazí na debugger příkaz pozastaví provádění a pokud připojíme nástroje pro ladění chromu, můžeme ladit testovací kód (stejně jako testovanou funkci) pomocí nástrojů Chrome.
Prohlížeč Chrome je zde nezbytnou podmínkou pro použití nativního ladicího programu Node.
Postupujte podle níže uvedených kroků.
# 1) Přidejte do testu klíčové slovo debuggeru, tj. V místě, kde chcete, aby test narazil na zarážku, vložte příkaz „debugger“
#dva) Proveďte test pomocí příznaku –inspect-brk.
Pomocí níže uvedeného příkazu proveďte test v režimu zarážky.
/usr/local/bin/node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand
# 3) Připojte ladicí program uzlu v prohlížeči Chrome. Nyní v prohlížeči Chrome přejděte na chrome: // inspect a připojte se k cílovému posluchači, který byl vytvořen výše uvedeným krokem.
# 4) Pokračujte v provádění a uvidíte, že zarážka zasáhne inspektor ladicího programu pro chrom a můžete ladit zásobník volání a stav objektu v samotném ladicím programu chromu.
Tento přístup k ladění testů Jest je v pořádku, ale není příliš uživatelsky přívětivý, protože musíte neustále přecházet z editoru kódu na Chrome a naopak, což způsobuje velké tření. V nadcházející části uvidíme způsoby konfigurace ladicího programu v samotném editoru kódu Visual Studio.
# 2) Použití ladicí konfigurace VS Code
# 1) V levém panelu vyberte část Debug / Run kódu Visual Studio.
#dva) Nyní aktualizujeme konfiguraci ladění pro žertovné testy. Chcete-li to provést, přidejte novou konfiguraci výběrem možnosti nabídky.
# 3) Jakmile je vybrána možnost přidání konfigurace, otevře se v podokně editoru soubor `launch.json` s výchozím obsahem. Odeberte výchozí obsah a zkopírujte obsah níže pro vytvoření konfigurace ladění pro testy 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) Uložte nově přidanou konfiguraci obsahu, která by se použila k ladění testů Jest. Pokud si konfiguraci pečlivě přečtete, je to podobné tomu, co jsme udělali, když jsme se pomocí příkazu pokusili připojit k ladicímu programu Node v nástrojích pro vývojáře Chrome.
--inspect-brk ./node_modules/jest/bin/jest.js --runInBand
Výhodou konfigurace zde je, že testy budou spuštěny / odladěny jako součást samotného editoru (v tomto případě je to VSCode) a nemusíme se připojovat k žádné externí aplikaci.
# 5) Jakmile je vytvořena konfigurace ladění, můžete nyní do testů přidat zarážky a provést pomocí této konfigurace RUN. Tím zajistíte, že se test zastaví na zarážkách a vy můžete ladit hodnoty, stav objektu na zarážce ve skutečném testovacím souboru.
Zarážky lze přidat kliknutím na čísla řádků v souborech kódu.
výchozí brána není k dispozici Windows 8
# 6) Po přidání zarážky můžeme vybrat konfiguraci Spustit, kterou jsme přidali v kroku č. 3, abychom provedli / ladili test.
# 7) Při výběru / klepnutí na tlačítko Spustit byste měli vidět, že spuštění zasáhne zarážku, která byla umístěna, a můžete získat další podrobnosti, jako jsou hodnoty prostředí / proměnných, trasování zásobníku atd. Na zarážce.
Tlačítka řízení bodu zlomu / toku kódu lze použít k přesunu na další bod zlomu nebo k přesunutí uvnitř funkce pro další podrobnosti.
Výukový program Video JELadění
Je tu Mocha vs. Jasmine
V následující části porovnáme Jest vs Mocha a Jest vs Jasmine na různých parametrech a porovnání funkcí, jako je testování snímků, snadná konfigurace a schopnosti různých rámců.
Parametr | Je | Moka | Jasmín |
---|---|---|---|
Podporované typy testování | Většinou se používá pro testování jednotek. | Testování jednotky | Testování jednotek a testování E2E. |
Testování snímků | Plně podporováno - Jest specificky používaný pro komponenty React, podporuje pořizování snímků komponenty a jeho použití k porovnání výstupů testu s uloženou strukturou komponent. Snímky jsou skvělý způsob, jak zajistit, aby se uživatelská rozhraní neočekávaně nezměnila. | Bez podpory | Bez podpory |
Tvrzení a srovnávače | Pro matchery použijte knihovnu expect.js. | Podpora pro vestavěný asertovací modul Node a může zahrnovat i další knihovny tvrzení. | Ve vestavěných tvrzeních |
Uštěpačný | Plně zabudovaná podpora pro Mocks a Stubs in Jest. | Žádná vestavěná podpora pro zesměšňování nebo píchání. Lze použít s jinými knihovnami, jako je Sinon, pro podporu Mocking. | Integrovaná omezená podpora pomocí spyOn. Lze integrovat s jinými knihovnami. |
Rychlost provedení | 4x Testy Jest jsou izolovány ve vlastním pískovišti. Testy Jest tedy probíhají v podstatě paralelně, díky čemuž poskytují značné zlepšení v časech provádění. | X Nepodporuje paralelní provádění testů. | X Nepodporuje paralelní provádění testů. |
Konfigurace a nastavení | Velmi snadné - je nutná nulová konfigurace. | ||
Způsob provedení zkoušky | Bezhlavý | Bezhlavý | Bezhlavý |
Testujte výstup a kontext | Generuje bohatý kontext po spuštění - Jest poskytuje podrobný kontext testu, který umožňuje hloubkové zkoumání toho, co způsobilo selhání, a tím zajišťuje snadné ladění. | Testovací výstup není příliš čitelný a ladění je trochu náročné. | |
Ladění | Podporu pro nativní debuggery Node lze také použít k ladění v editorech, jako je Visual Studio Code, prostřednictvím samostatné konfigurace spuštění. | Podporuje nativní ladicí program uzlů. | Může použít karma testovací běh ke spuštění testů v Chromu a ladění. |
Pokrytí kódu | Jest má zabudovanou podporu pro pokrytí kódem. Konfiguraci pokrytí lze určit v konfiguraci Jest a sestavy lze generovat při každém provedení testu. | Žádná vestavěná podpora. Poskytuje podporu pro externí knihovny ke generování zpráv o pokrytí. | Stejné jako Mocha |
Styl testování | BDD Všechny tři rámce podporují testy, které mají být psány jako sada specifikací nebo specifikací, díky nimž jsou čitelnější. | BDD | BDD |
Závěr
V tomto kurzu jsme se dozvěděli o různých způsobech, jak můžete ladit své testy Jest v rámci Visual Studio Code nebo v inspektoru Chrome pomocí nativního ladicího programu uzlu.
Rovněž jsme prozkoumali běžně používané možnosti konfigurace v konfiguračním souboru Jest. Konfigurace Jest pomáhá dosáhnout mnoha věcí, jako je pokrytí kódu, zprávy Html, nastavení falešného chování, nastavení globálních proměnných atd.
Výukový program PREV | PRVNÍ výuka
Doporučené čtení
- Výukový program Jest - Testování jednotky JavaScriptu pomocí Jest Framework
- Jak otestovat reakce aplikací pomocí Jest Framework
- Výukový program Jasmine Framework včetně příkladů Jasmine Jquery
- Distribuované sestavy: Konfigurace Jenkins Master Slave
- Debugging Techniques In Selenium: Breakpoints, Debug Mode & More
- Výukový program pro testování konfigurace s příklady
- Jak nastavit rámec testování Node.js: Výukový program Node.js
- 25 nejlepších rámců a nástrojů pro testování automatizace Java (část 3)