Uhlové - Ako pridať Jasmine Custom Matchers do testovania jednotiek

Obaja v Javascript a strojopis

Foto Hosea Georgeson na Unsplash

Jasmine je BDD framework, ktorý poskytuje veľa vstavaných matcherov pre testovanie jednotiek. Niekedy však musíme vytvoriť vlastné prispôsobovače, aby sme uľahčili všetky testovacie scenáre alebo urobili čitateľnejšie testovacie prípady.

V tomto príspevku sa pozrieme na jasmínové zápasníky a ich použitie v jazyku Javascript aj strojopis.

  • Čo sú to Matchers
  • Vstavané Matchers a ako ich používať
  • Vlastné matematiky a ako ich definovať
  • Príklad projektu v Javascripte
  • Príklad projektu v strojopise
  • Ako definovať Vlastné Matchers v uhle
  • zhrnutie

Čo sú zápasníci

Matchers nie sú nič iné ako porovnávacie funkcie, aby skutočne porovnali očakávaný a skutočný výsledok v testovacích špecifikáciách.

Tu je príklad jedného z účastníkov zápasu. Ak sa pozrieme na riadok číslo 4, toBe je porovnávací hráč a používa sa vždy s očakávaním. Iba porovnáva skutočný výsledok s očakávaným výsledkom a vracia booleovskú hodnotu.

Vstavané Matchers a ako ich používať

Jasmine poskytuje toľko vstavaných zápasníkov a pozrime sa na niektoré z nich tu.

návrhy zápasu od VSCode

Takto ich potrebujeme používať.

Vlastné matematiky a ako ich definovať

Väčšinu času tieto vstavané zápasníky z jazmínu stačia. Niekedy však musíme vytvoriť vlastné prispôsobovače.

Jasmine poskytuje funkciu s názvom addMatchers, takže môžeme rozšíriť zápasníky pomocou našich vlastných alebo užívateľom definovaných funkcií. Musíme to vložiť do funkcie BeforeEach.

Pozrime sa, ako tu definujeme vlastný porovnávač. Ako vidíme nižšie, definujeme toBeOlderThan, ktoré vracia funkciu porovnávania s výsledkom objektu s odovzdaním polí a správou. Ak test zlyhá, na konzole sa zobrazí všetka správa, ktorú tu poskytneme.

Príklad projektu v Javascripte

Napísal som repo tento príspevok, pomocou ktorého môžete postupovať ďalej. Ak ju chcete použiť, prejdite na odkaz vyššie, klonujte a inštalujte.

// klonovať repo
git clone https://github.com/bbachi/jasmine-tests.git
// inštalácia závislostí a test
Npm inštalácia
npm test

Máme osobu s metódami getName, getAge, setName a setAge

Chceme otestovať nad triedou s vlastnými porovnávačmiBeOlderThan ,BeLastNameEqualTo ,BeFirstNameEqualTo. Definujme týchto vlastných porovnávačov v samostatnom objekte, ako je uvedené nižšie, a pridáme tento objekt do funkcie BeforeEach.

Toto je zvyšok súboru, do ktorého pridáme nad vlastným objektom matchers do addMatchers a testujeme projekt.

Toto je výstup, keď spustíme test npm.

výstup testu

Príklad projektu v strojopise

Napísal som repo pre strojopisný projekt, pomocou ktorého môžete ďalej sledovať. Ak ju chcete použiť, prejdite na odkaz vyššie, klonujte a inštalujte.

// klonovanie projektu
klon git https://github.com/bbachi/jasmine-tests-typescript.git
// inštalácia závislostí a spustenie testu
Npm inštalácia
npm test

V stroji máme triedu osôb s metódami getName, getAge, setName a setAge

Potrebujeme nainštalovať nasledujúce definície typov, pretože sú v stroji

"@ types / jasmine": "^ 3.3.12",
"@ types / node": "^ 12.0.0",
"ts-node": "^ 8.1.0",
"strojopis": "^ 3.4.5"

Tu sú vlastné metódy v strojopise v samostatnom súbore pod pomocníkom src / test-helpers

Musíme definovať definície typov pre tieto vlastné porovnávače, pretože tieto sú rozšírené a nie sú prítomné v súbore s definíciou typu jazmínu a pre kompilátor písacieho stroja, ktorý rozpozná.

Môžeme ich deklarovať pod jasmínovým menným priestorom, ako je uvedené nižšie z riadku číslo 4.

Toto je výstup, keď spustíme test npm.

výstup testu

Ako definovať Vlastné Matchers v uhle

V Angular definujeme vlastné stroje rovnakým spôsobom. Potrebujeme definovať custom-matcher.ts pre všetky vlastné matchers a custom-matcher.d.ts pre definície typov v testovacom priečinku.

samostatný priečinok pre vlastný porovnávač

Importujte súbory custom-matcher.ts a custom-matcher.d.ts do súboru so špecifikáciami, ako je uvedené nižšie.

Z dôvodu stručnosti som zo spodného súboru odstránil všetok zostávajúci kód.

Toto je výstup pri spustení testu npm

výstup testu

zhrnutie

  • Matchers sú porovnávacie funkcie, ktoré porovnávajú skutočný a očakávaný výsledok a vracajú booleovskú hodnotu.
  • Jasmine je testovací rámec BDD, ktorý Angular používa na testovanie jednotiek.
  • Zápasy by sa mali vždy používať v spojení s očakávaním.
  • Jasmine poskytuje zabudované porovnávače, ktoré je možné použiť priamo v projekte.
  • Jasmínové porovnávače môžeme rozšíriť o funkciu s názvom addMatchers ().
  • Jasmine custom matchers možno písať v javascripte aj stroji.
  • Potrebujeme deklarovať súbory s definíciou typu pre vlastné zhody pre kompilátor písacieho stroja, ktorý sa má kompilovať.
  • Jasmine.addMatchers () by sa mali vždy používať vo vnútri pred každým blokom ().

zdroje

  • Vlastný porovnávač Javescript Git repo
  • Vlastný porovnávač Písací stroj Git repo
  • Prispôsobený repár Angular Git

Ďakujeme vám za prečítanie a ak to považujete za užitočné, dajte mu tlieskať a pomôžte ostatným nájsť ho. Prosím, sledujte ma kvôli ďalším zaujímavým príbehom :)