Kutni - Kako dodati prilagođene podupirače Jasmina u ispitivanju jedinica

Oba u Javascript i Typescript

Fotografiju Hosea Georgeson na Unsplash

Jasmine je BDD okvir koji pruža puno ugrađenih matchera za testiranje jedinice. No ponekad moramo stvoriti vlastite prilagođene podudarnike kako bismo olakšali sve scenarije testiranja ili napravili još čitljivije testne slučajeve.

U ovom postu ćemo proći kroz jasmin matchere i njihovu upotrebu kako u Javascript-u tako i u Typescriptu.

  • Što su Matcherovi
  • Ugrađene podudarnice i kako ih koristiti
  • Prilagođeni modeli i kako ih definirati
  • Primjer projekta u Javascriptu
  • Primjer projekta u Typescriptu
  • Kako definirati prilagođene podudarnike u kutu
  • Sažetak

Što su matčeri

Matcheri nisu ništa drugo nego usporediti funkcije za stvarno uspoređivanje očekivanog i stvarnog rezultata u testnim specifikacijama.

Evo primjera jednog od Matchera. Ako pogledamo liniju broj 4, toBe je podudar i uvijek se koristi s ocekivanjem. Samo uspoređuje stvarni rezultat s očekivanim rezultatom i vraća logičku vrijednost.

Ugrađene podudarnice i kako ih koristiti

Jasmine nudi toliko ugrađenih matchera, a neke od njih pogledajte ovdje.

prijedlozi za podudarnike od VSCode

Evo kako ih trebamo koristiti.

Prilagođeni modeli i kako ih definirati

Većinu vremena ove ugrađene podloge od jasmina su dovoljne. Ali ponekad moramo kreirati prilagođene matrice.

Jasmine pruža funkciju koja se naziva addMatchers tako da matrice možemo proširiti pomoću prilagođenih ili korisnički definiranih funkcija. To moramo staviti u funkciju beforeEach.

Pogledajmo kako ovdje definiramo prilagođeno podudaranje. Kao što vidimo u nastavku, definiramo toBeOlderThan koji vraća funkciju usporedbe s rezultatom objekta s poljima prolaska i porukom. Ako test ne uspije, ono što ovdje pošaljemo prikazat će se na konzoli.

Primjer projekta u Javascriptu

Napisao sam repo za ovaj post koji možete koristiti za nastavak. Da biste ga koristili, idite na gornju vezu, klonirajte se i instalirajte.

// klonirati repo
git klon https://github.com/bbachi/jasmine-tests.git
// instalirati ovisnosti i testirati
npm instalacija
npm test

Imamo osobu s metodama getName, getAge, setName i setAge

Želimo testirati gornju klasu s prilagođenim matcherovima toBeOlderThan, toBeLastNameEqualTo, toBeFirstNameEqualTo. Definirajmo ove prilagođene podudarnike u zasebnom objektu kao što je dolje i dodajmo ovaj objekt u funkciju beforeEach.

Ovdje je ostatak datoteke u koju dodavamo objekt prilagođenih matchera objekt addMatchers i testiramo projekt.

Evo rezultata kada pokrećemo npm test.

ispitni izlaz

Primjer projekta u Typescriptu

Napisao sam repo za tipkutički projekt koji možete koristiti za nastavak. Da biste ga koristili, idite na gornju vezu, klonirajte se i instalirajte.

// klonirati projekt
git klon https://github.com/bbachi/jasmine-tests-typescript.git
// instalirati ovisnosti i pokrenuti test
npm instalacija
npm test

Imamo tip osobe u typecriptu s metodama getName, getAge, setName i setAge

Moramo instalirati sljedeće definicije tipa s obzirom da se nalaze u typecriptu

"@ vrste / jasmin": "^ 3.3.12",
"@ vrste / čvor": "^ 12.0.0",
"ts-čvor": "^ 8.1.0",
"typecript": "^ 3.4.5"

Ovdje su prilagođene metode u typeccriptu u zasebnoj datoteci pod src / test-helpers

Moramo definirati definicije tipa za ove prilagođene matcherove jer su one proširene i nisu prisutne u datoteci definicije tipa jasmina i za prepoznavanje prevoditelja.

Možemo ih proglasiti pod imenima jasmina kao što je dolje iz retka broj 4.

Evo rezultata kada pokrećemo npm test.

ispitni izlaz

Kako definirati prilagođene podudarnike u kutu

U Angularu definiramo prilagođene machere na isti način. Moramo definirati custom-matcher.ts za sve prilagođene matchers i custom-matcher.d.ts za definicije vrsta u mapi za testiranje.

zasebna mapa za prilagođeni matcher

Uvozite i custom-matcher.ts i custom-matcher.d.ts u datoteku spec.

Uklonio sam sav preostali kod iz donje datoteke radi sažetka.

Evo rezultata kada pokrenete npm test

ispitni izlaz

Sažetak

  • Matchers su funkcije za usporedbu koja uspoređuje stvarni i očekivani rezultat i vraća logičku vrijednost.
  • Jasmine je BDD okvir za testiranje koji Angular koristi za ispitivanje jedinice.
  • Utakmice se uvijek trebaju koristiti zajedno s očekivanjem.
  • Jasmine nudi ugrađene matchere koji se mogu izravno koristiti u projektu.
  • Jasmin matchere možemo proširiti funkcijom koja se naziva addMatchers ().
  • Jasmine prilagođeni matcheri mogu se pisati i u javascriptu i utipkanom jeziku.
  • Moramo deklarirati datoteke s definicijom tipa za prilagođene matcherove za prevoditelj typecript-a koji treba kompilirati.
  • Jasmine.addMatchers () uvijek treba koristiti unutar bloka ispredEach ().

Resursi

  • Prilagođeni matč Javescript Git repo
  • Prilagođeni matčerski pisač Git repo
  • Prilagođeni matcher Angular Git repo

Hvala vam na čitanju i ako smatrate ovo korisnim, molimo da ga zapljeskate i pomozite drugima da ga pronađu. Molim vas pratite me za više zanimljivih priča :)