jasmine framework tutorial including jasmine jquery with examples
Denne artikkelen dekker Jasmine Testing Framework & Its Constructs. Lær også om Jasmine-Jquery-pakken som utvider Jasmine til å teste Jquery-applikasjoner:
Vi lærte alt om Karma i vår forrige opplæring i denne serien.
I denne opplæringen vil vi lære hvordan du bruker Jasmine til å skrive tester for en JavaScript-webapplikasjon, og også bli kjent med hvordan du bruker den nodebaserte pakken Jasmine-Jquery for å teste Jquery-webapplikasjonen.
Her vil vi hovedsakelig fokusere på de grunnleggende Jasmine-konstruksjonene for å skrive tester.
bruk av grep-kommando i unix
La oss begynne!!
Hva du vil lære:
Hva er testrammer?
Testing Frameworks er suiter av programmer eller pakker som letter testing av et annet program for å sikre kvaliteten. Hver programmeringsplattform har sitt eget testrammeverk som du må ha lært fra vår forrige opplæring.
Det er forskjellige sett med tester som kan utføres på ethvert programvaresystem. Eksempler av slike tester inkluderer enhetstesting, end to end (e2e) testing osv. Sjekk her for flere detaljer.
Eksempler av testrammer for JavaScript-applikasjoner inkluderer Mocha, Jasmine, praktikant, spøk, Qunit, etc.
Introduksjon til Jasmine Framework
Det er forskjellige utviklingsmetoder tilgjengelig i dagens scenario. Av disse inkluderer to av de mest populære utviklingsmetodene Test-Driven Development (TDD) og Behavior Driven Development (BDD).
Testdrevet utvikling er en utviklingsmetode der vi skriver testene først, og deretter kjører dem. Hver test mislykkes ved den aller første utførelsen fordi funksjonene den bruker ikke er skrevet ennå.
Vi skriver deretter funksjonene og kjører testene på nytt. Her mislykkes noen av testene, og de andre består. Vi fortsetter å omforme koden for å få alle testene bestått.
Behavioral Driven Development følger også den samme tilnærmingen. Den eneste forskjellen er at BDD er skrevet for å tilfredsstille eiere av programvaren (kunde / forretningsorientert), dvs. for å oppfylle programvarefunksjonene med forretningskravene eller forventet oppførsel.
Mens TDD er skrevet for å tilfredsstille utviklerne av programvaren, slik at det kan være trygt at programvarefunksjonene som brukes til å bygge funksjonene, gir nøyaktige resultater, stabile og pålitelige.
Se her å vite mer om TDD vs BDD.
Jasmine er et JavaScript-testrammeverk som er atferdsmessig drevet, noe som gjør det enkelt å skrive tester og ikke avhenger av andre rammer.
Det er to måter å bruke Jasmine til å skrive testene på. En måte er å bruke den frittstående versjonen som følger med specRunner.html (som viser testresultater i en nettleser). Den andre måten er å bare installere Jasmine, skrive testene dine og kjøre den med en testløper som Karma for å få resultatene vist i konsollvinduet.
Vi vil se på begge måtene å bruke Jasmine på i vår kommende opplæring.
Grunnleggende Jasmine konstruerer for skrivetester
Nedenfor er de forskjellige konstruksjonene til Jasmine for å skrive tester.
La oss se!!
Nr. 1) beskriver: Denne konstruksjonen brukes til å skrive en testpakke. En testpakke er en samling av flere tester. ‘Beskriv 'er en funksjon i seg selv som tar to parametere: Navnet på suiten og en funksjon .
Funksjonsparameteren inneholder en samling tester gruppert under testserien.
# 2) det: Denne konstruksjonen brukes til å skrive en testspesifikasjon. En testspesifikasjon er et sett med konstruksjoner som tester en bestemt eller liten forventning for et system.
Som å beskrive konstruksjon, tar det også to parametere: Navnet på testen og funksjonen som inneholder påstandene som evaluerer om forventningen er oppfylt eller ikke.
# 3) forvent : Denne konstruksjonen hjelper til med å teste om forventningene fra programvaresystemet er oppfylt eller ikke.
Det tar en parameter som kalles den faktiske (som er resultatet programvaresystemet returnerer), og deretter lenkes den med en annen konstruksjon som kalles en matcher (forventet resultat).
# 4) Kamper : Dette er en samling konstruksjoner som forventet konstruksjon er lenket til. Den avgjør om forventningen er oppfylt eller ikke.
Disse konstruksjonene tar den forventede verdien av den nærmeste testen som utføres, og samsvarer den med den faktiske verdien som oppnås ved utførelsen av testen. Klikk her for en komplett liste over Jasmine matcher-konstruksjoner
# 5) før hver : Dette er en global konstruksjon, levert av Jasmine for å hjelpe deg med å holde testene TØRRE (ikke gjenta deg selv). Denne konstruksjonen brukes vanligvis i funksjonsparameteren til beskriv konstruksjonen.
Enhver kode inne kjører en gang før spesifikasjonene under suitene kjøres. Derfor bør hvilken som helst kode du vil kjøres før alle spesifikasjonene i suiten plasseres her.
# 6) etter hver: Denne konstruksjonen er den samme som førHver, og forskjellen er at koden den inneholder kjøres etter hver kode når beskriv konstruksjonen er kjørt.
# 7) dette : Denne konstruksjonen er et tomt objekt som kan brukes til å dele verdier på tvers av 'beforeEach', 'afterEach', og 'it' konstruerer i alle testpakker. Hver testpakke har sitt eget objekt, og objektet tilbakestilles til tomt før testpakkene kjøres.
# 8) xbeskriv : Denne konstruksjonen brukes til å deaktivere programvaresuitene. Den forteller bare testløperen å hoppe over testpakken, og resultatet blir derfor ikke vist og vurdert.
formørkelse ide for c / c ++
# 9) hit : Denne konstruksjonen brukes til å indikere en spesifikasjon i en suite som en ventende spesifikasjon. En ventende spesifikasjon er en spesifikasjon som ikke vil kjøre, men som vil ha navnene deres vist i testresultatet som ventende.
Også, hvis i noen spesifikasjoner den ventende funksjonen kalles, så er spesifikasjonen merket som en ventende spesifikasjon. Enhver spesifikasjon som er deklarert uten en funksjonsdel, er også merket som ventende.
# 10) spyOn : Denne konstruksjonen brukes til å lage en Jasmine-spion. Spioner er hån. Mocks er falske gjenstander opprettet for å representere eller etterligne det virkelige objektet. Det er påkrevd med hån for å forhindre overheadkostnadene ved å lage det virkelige objektet de representerer.
Essensen av enhetstesting av en kode er å se hvordan en funksjon oppfører seg under flere forhold uavhengig av de andre enhetene som er koblet til eller vil være koblet til den.
Dermed utfører vi front-end-enhetstesting for å se hvordan en enhet på front-enden til programvareproduktet vårt vil oppføre seg uavhengig av de andre front-end-enhetene som skal kobles til eller er koblet til det.
I løpet av denne testen ringer vi til forskjellige argumenter og funksjoner som kan være avhengig av andre funksjoner og objekter som nettverkstilkoblinger, datakilder og filer.
For å møte disse avhengighetene (slik at vi kan utføre front-end testing av enheter), er det et behov for å gjøre de nødvendige ressursene tilgjengelige. Derfor adopterer vi mocks for å etterligne de virkelige objektene og unngå overheadkostnadene ved å faktisk lage dem.
Merk at spyOn på et enkelt nivå brukes til å teste om en avhengig funksjon faktisk kalles, og denne avhengige funksjonen kan bare være en enkel funksjon som er definert på objektet vi spionerer.
SpyOn-funksjonen tar to parametere: objektet som blir spionert og avhengighetsfunksjonen den inneholder som er sjekket for å sikre at vår funksjon kaller det.
Spioner finnes i suiten eller spesifikasjonen der den er definert. Etter at pakken eller spesifikasjonen blir henrettet, slutter spionen å eksistere.
# 11) createSpy: Denne konstruksjonen har samme formål som spyOn, men forskjellen er at denne funksjonen gjør det mulig å erstatte den avhengige funksjonen med en falsk for testing.
Hvorfor må jeg gjøre dette? Dette er nyttig når den opprinnelige avhengigheten også er avhengig av de andre ressursene som ikke er tilgjengelige i sammenheng med testen.
Denne funksjonen er tilgjengelig ved bruk av Jasmine-objektet med en prikk, dvs. Jasmine.createSpy (parametere). Det tar bare en parameter, som er en streng som representerer navnet på avhengigheten som vi oppretter mocken for.
Merk at etter å ha opprettet en spion, returnerer spionen på den første samtalen udefinert, da den første samtalen antas å være opplæringen. Etter påfølgende samtaler returnerer funksjonen den faktiske verdien. Se flere detaljer når vi utforsker det nedenfor.
Jasmin Test Dobbel funksjon funksjon
Konstruktionene spyOn og createSpy gjør det mulig å lage mocks (for avhengighet). Dette er ingen annen ting enn å teste to funksjoner i en test, og dermed påstanden 'test dobbel funksjon'.
Det andre ordet som kan brukes til å referere til spott er 'stubber'.
Spy Matchers: Det er flere matchere som imøtekommer behovet for å samhandle med spioner. De inkluderer: 'ToHaveBeenCalled' og 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : Dette brukes i en spesifikasjon for å bestemme at avhengigheten som blir spionert ble kalt.
- toHaveBeenCalledWith : Dette brukes i en spesifikasjon for å bestemme at avhengigheten som blir spionert ble kalt med et bestemt sett med parametere.
Besøk her for en detaljert oversikt over alle Jasmine-konstruksjoner.
pl sql intervju spørsmål og svar for erfarne
To måter å bruke jasmin på
Det er to måter å skrive Jasmine-tester på. Den ene er å bruke Jasmine som en frittstående distribusjon via specRunner, og den andre bruker Jasmine med testløper.
La oss først se på å kjøre Jasmine-tester via specRunner.
Hvordan bruke jasmin frittstående distribusjon?
Klikk her , og last ned den frittstående distribusjonen ved å klikke på Jasmin-frittstående .
Pakk ut filen til prosjektmappen. Du vil oppdage at den legger til disse katalogene i prosjektkatalogen: lib, src og spec; og legger også til disse filene: specRunner.html og MIT.LICENSE.
Lib-katalogen inneholder Jasmine-biblioteket som utfører testene i testfilene som er lagt til specRunner.html-filen. SpecRunner.html-filen lar deg kjøre testen og vise resultatet i nettleseren i et nettsideformat i stedet for i konsollvinduet.
Src-katalogen inneholder front-end kildekoder, og spesifikasjonskatalogen inneholder testfilene skrevet med Jasmine-testserier. Som standard kan du se noen testserier og filer i katalogene, men vi skal ikke bruke disse, vi vil skrive våre egne tester i de påfølgende opplæringene.
Bruke jasmin med en testløper
Dette er den andre måten å bruke Jasmine på, hvor du konfigurerer en testløper som Karma og mater den med kildefilen din og testspesifikasjonsfilen for å kjøre testene.
Deretter kan du enten vise resultatene og generere rapporter ved hjelp av Istanbul eller publisere testresultatene til coveralls.io.
Introduksjon til Jasmine-Jquery
Jasmine-Jquery er en nodepakke som hjelper testingen av front-end-koder bygget med jquery. På en måte utvider det Jasmine-rammeverket til å være godt egnet for Jquery's front-end-testing.
Utvidelsene det legger til Jasmine-rammeverket inkluderer:
- Et sett med tilpassede matchere for Jquery-rammeverket, for eksempel toBeChecked, toBeDisabled, toBeEmpty, etc.
- Et API for håndtering av HTML-, CSS- og JSON-inventar i spesifikasjonene våre.
Nå er spørsmålet 'hva er en API?' Et API (applikasjonsprogrammeringsgrensesnitt) er et grensesnitt som gir deg tilgang til visse funksjoner som det kan ta tid og ressurser å bygge fra bunnen av.
Et annet spørsmål er hva er inventar? Armaturer er forhåndsdefinerte tilstander til et objekt som vi vanligvis lager mens vi skriver tester for å etablere en grunnlinje (et kjent og fast miljø) som testene kjøres mot for å gjøre resultatene repeterbare.
Se her for mer informasjon om tilpassede matchere og API (er).
Konklusjon
I denne veiledningen prøvde vi å forstå hva et testrammeverk er, og vi introduserte Jasmine som et JavaScript-testrammeverk. Vi så på forskjellige Jasmines konstruksjoner som kan brukes til å skrive testspesifikasjoner, og vi introduserte til slutt Jasmine-Jquery, som er en nodebasert pakke som utvider Jasmine til å kunne teste Jquery-applikasjoner.
Takeaways
- Et testrammeverk er en serie programmer eller pakker som letter testing av programvaren for å sikre kvaliteten på den utviklede programvaren.
- Jasmine er et atferdsdrevet utviklingsverktøy som gir konstruksjoner som letter skriving av testspesifikasjoner for JavaScript-applikasjoner.
- Testdrevet utvikling er en utviklingsmetode der vi skriver testene først, og deretter kjører dem. Hver test mislykkes ved den aller første utførelsen fordi funksjonen den bruker ennå ikke er skrevet. Deretter skriver vi funksjonene og kjører testene på nytt. Her mislykkes noen av testene, og andre består. Deretter fortsetter vi å omforme koden til alle testene består.
- En atferdsdrevet utviklingsmetode er en utviklingsmetode der det skrives tester for å fastslå at programvarefunksjonene oppfører seg som forventet av alle interessenter.
- Jasmine-Jquery er en nodepakke som hjelper testingen av front-end-koder bygget med Jquery.
Neste opplæring
I vår kommende opplæring vil vi utforske måtene å bruke disse to verktøyene (Jasmine og Karma) til å skrive testspesifikasjoner for et typisk prosjekt. Vi ser også hvordan du bruker andre verktøy som gulp, browserify, etc. som kreves for å ha testene våre i gang.
PREV Opplæring | NESTE veiledning
Anbefalt lesing
- 8 Best Behavior Driven Development (BDD) verktøy og testrammer
- Hvordan testere er involvert i TDD, BDD og ATDD teknikker
- TDD vs BDD - Analyser forskjellene med eksempler
- BDD (Behavior Driven Development) Framework: A Complete Tutorial
- Hvordan skrive teststrategidokument (med eksempel på teststrategimal)
- 10 beste API-testverktøy i 2021 (SOAP og REST API-testverktøy)
- API Testing Tutorial: En komplett guide for nybegynnere
- Python DateTime Tutorial med eksempler