jasmine framework tutorial including jasmine jquery with examples
Denne artikel dækker Jasmine Testing Framework & Its Constructs. Lær også om Jasmine-Jquery-pakke, der udvider Jasmine til at teste Jquery-applikationer:
Vi lærte alt om Karma i vores tidligere tutorial i denne serie.
I denne vejledning lærer vi, hvordan man bruger Jasmine til at skrive tests til en JavaScript-webapplikation og også lærer, hvordan man bruger den node-baserede pakke Jasmine-Jquery til at teste Jquery-webapplikationen.
Her vil vi primært fokusere på de grundlæggende Jasmine-konstruktioner til skrivning af tests.
Visual Studio Team Foundation Server 2015 tutorial
Lad os begynde!!
Hvad du lærer:
Hvad er testrammer?
Testing Frameworks er pakker af programmer eller pakker, der letter test af et andet program for at sikre dets kvalitet. Hver programmeringsplatform har sin egen testramme, som du skal have lært fra vores tidligere tutorial.
Der er forskellige sæt tests, der kan udføres på ethvert softwaresystem. Eksempler af sådanne tests inkluderer enhedstest, end to end (e2e) test osv. Kontroller her for flere detaljer.
Eksempler af testrammer til JavaScript-applikationer inkluderer Mocha, Jasmine, praktikant, spøg, Qunit osv.
Introduktion til Jasmine Framework
Der findes forskellige udviklingsmetoder i det nuværende scenarie. Ud af disse inkluderer to af de mest populære udviklingsmetoder Test-Driven Development (TDD) og Behavior Driven Development (BDD).
Testdrevet udvikling er en udviklingsmetode, hvor vi først skriver testene og derefter kører dem. Hver test mislykkes ved den allerførste udførelse, fordi de funktioner, den bruger, endnu ikke er skrevet.
Vi skriver derefter funktionerne og kører testene igen. Her fejler nogle af testene, og de andre består. Vi fortsætter med at omlægge koden for at få alle testene bestået.
Behavioral Driven Development følger også den samme tilgang. Den eneste forskel er, at BDD er skrevet for at tilfredsstille ejere af softwaren (kunde / forretningsorienteret), dvs. for at opfylde softwarefunktionerne med forretningskravene eller den forventede adfærd.
Mens TDD er skrevet for at tilfredsstille udviklerne af softwaren, så det kan forsikres, at de softwarefunktioner, der bruges til at opbygge funktionerne, giver nøjagtige resultater, er stabile og pålidelige.
Se her at vide mere om TDD vs BDD.
Jasmine er en JavaScript-testramme, der er adfærdsmæssigt drevet, hvilket gør skrivetest let og ikke afhænger af andre rammer.
Der er to måder at bruge Jasmine til at skrive dine tests på. En måde er at bruge den enkeltstående version, der følger med specRunner.html (som viser testresultater i en browser). Den anden måde er simpelthen at installere Jasmine, skrive dine tests og køre den med en testløber som Karma for at få resultaterne vist i konsolvinduet.
Vi ville se på begge måder at bruge Jasmine på i vores kommende tutorial.
Grundlæggende Jasmin konstruerer til skrivetests
Nedenfor er de forskellige konstruktioner af Jasmine til skrivning af tests.
Lad os se!!
# 1) beskriver: Denne konstruktion bruges til at skrive en testpakke. En testpakke er en samling af flere tests. 'Beskrive' er en funktion i sig selv, der tager to parametre: Navnet på pakken og en funktion .
Funktionsparameteren indeholder en samling af tests grupperet under testpakken.
# 2) det: Denne konstruktion bruges til at skrive en testspecifikation. En testspecifikation er et sæt konstruktioner, der tester en bestemt eller mest forventet forventning til et system.
Ligesom beskriv konstruktionen tager det også to parametre: Testens navn og den funktion, der indeholder påstandene, der vurderer, om forventningen er opfyldt eller ej.
# 3) forvent : Denne konstruktion hjælper med at teste, om forventningerne fra softwaresystemet er opfyldt eller ej.
Det tager en parameter kaldet den faktiske (hvilket er resultatet, softwaresystemet returnerer), og derefter lænkes den med en anden konstruktion kaldet en matcher (forventet resultat).
# 4) Kampe : Dette er en samling konstruktioner, som den forventede konstruktion er lænket til. Det bestemmer, om forventningen er opfyldt eller ej.
video downloader software fra ethvert websted
Disse konstruktioner tager den forventede værdi af den nærmeste test, der udføres, og matcher den med den faktiske værdi, der opnås ved udførelsen af testen. Klik på her for en komplet liste over Jasmine matcher-konstruktioner
# 5) beforeEach : Dette er en global konstruktion, leveret af Jasmine for at hjælpe dig med at holde dine tests TØRRE (gentag ikke dig selv). Denne konstruktion bruges normalt i funktionsparameteren til beskriv konstruktionen.
Enhver kode inde kører en gang, før specifikationerne under suiterne køres. Derfor skal enhver kode, som du ønsker at blive kørt først, før alle specifikationerne i pakken placeres her.
# 6) afterEach: Denne konstruktion er den samme som beforeEach, og forskellen er, at den kode, den indeholder, køres efter hver kode, når beskriv konstruktionen er kørt.
# 7) dette : Denne konstruktion er et tomt objekt, der kan bruges til at dele værdier på tværs af 'beforeEach', 'afterEach' og 'it' konstrueres i alle testpakker. Hver testpakke har sit eget objekt, og objektet nulstilles til tomt, før testpakkerne udføres.
# 8) xbeskriv : Denne konstruktion bruges til at deaktivere softwarepakker. Det fortæller simpelthen testkøreren at springe testpakken over, og resultatet vises derfor ikke og overvejes ikke.
# 9) hit : Denne konstruktion bruges til at indikere en spec i en suite som en ventende spec. En afventende spec er en spec, der ikke kører, men som har deres navne vist i testresultatet som afventende.
Også, hvis der i en hvilken som helst spec kaldes den afventende funktion, markeres spec som en afventende spec. Enhver spec, der er erklæret uden et funktionsorgan, er også mærket som afventende.
# 10) SpyOn : Denne konstruktion bruges til at skabe en Jasmine-spion. Spioner er hån. Mocks er falske objekter, der er oprettet for at repræsentere eller efterligne det rigtige objekt. Mocks kræves for at forhindre de faste omkostninger ved at skabe det virkelige objekt, som de repræsenterer.
Essensen af enhedstest af en kode er at se, hvordan en funktion opfører sig under flere forhold uafhængigt af de andre enheder, der er tilsluttet eller vil være forbundet til den.
Således udfører vi front-end-enhedstest for at se, hvordan en enhed i front-enden af vores softwareprodukt opfører sig uafhængigt af de andre front-end-enheder, der skal tilsluttes eller er forbundet til det.
Under denne test foretager vi opkald til forskellige argumenter og funktioner, der kan være afhængige af andre funktioner og objekter såsom netværksforbindelser, datakilder og filer.
For at imødekomme disse afhængigheder (så vi kan udføre front-end enhedstest) er der behov for at stille de nødvendige ressourcer til rådighed. Derfor adopterer vi mocks for at efterligne de virkelige objekter og undgå de faste omkostninger ved faktisk at skabe dem.
Bemærk, at spyOn på et simpelt niveau bruges til at teste, om en afhængig funktion faktisk kaldes, og denne afhængige funktion kan bare være en simpel funktion, der er defineret på det objekt, som vi spionerer.
SpyOn-funktionen tager to parametre: objektet, der udspioneres, og afhængighedsfunktionen, den indeholder, kontrolleres for at sikre, at vores funktion kalder det.
Spioner findes i pakken eller spec, hvori den er defineret. Når pakken eller specifikationen bliver henrettet, holder spionen op med at eksistere.
# 11) createSpy: Denne konstruktion tjener det samme formål som spyOn, men forskellen er, at denne funktion gør det muligt at erstatte den afhængige funktion med en falsk til test.
Hvorfor skal jeg gøre dette? Dette er nyttigt, når den oprindelige afhængighed også afhænger af de andre ressourcer, der ikke er tilgængelige i forbindelse med testen.
Denne funktion tilgås ved hjælp af Jasmine-objektet med en prik, dvs. Jasmine.createSpy (parametre). Det tager kun en parameter, som er en streng, der repræsenterer navnet på den afhængighed, som vi opretter mocken for.
Bemærk, at efter oprettelse af en spion vender spionen ved det første opkald udefineret, da det første opkald antages at være dets træning. Derefter returnerer funktionen den aktuelle værdi efter efterfølgende opkald. Se flere detaljer, når vi udforsker det nedenfor.
Jasmin Test dobbelt funktion funktion
Konstruktionerne spyOn og createSpy muliggør oprettelse af mocks (for afhængighed). Dette er ingen anden ting end at teste to funktioner i en test, således udsagnet 'test dobbeltfunktion'.
Det andet ord, der kan bruges til at henvise til mocks, er 'stubs'.
Spy Matchers: Der er flere matchere, der imødekommer behovet for at interagere med spioner. De omfatter: 'ToHaveBeenCalled' og 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : Dette bruges i en spec til at bestemme, at den afhængighed, der udspioneres, blev kaldt.
- toHaveBeenCalledWith : Dette bruges i en spec til at bestemme, at den afhængighed, der udspioneres, blev kaldt med et bestemt sæt parametre.
Besøg her for en detaljeret oversigt over alle Jasmine-konstruktioner.
kan du bruge ethvert vr-headset til ps4
To måder at bruge jasmin på
Der er to måder at skrive jasminprøver på. Den ene er at bruge Jasmine som en enkeltstående distribution via specRunner, og den anden bruger Jasmine med testløber.
Lad os først se på at køre Jasmine-tests via specRunner.
Hvordan man bruger Jasmine Standalone Distribution?
Klik på her , og download derefter den enkeltstående distribution ved at klikke på Jasmin-frittstående .
Pak filen ud til projektmappen. Du vil opdage, at det føjer disse mapper til projektmappen: lib, src og spec; og tilføjer også disse filer: specRunner.html og MIT.LICENSE.
Lib-biblioteket indeholder Jasmine-biblioteket, der udfører testene i testfilerne, der er føjet til filen specRunner.html. SpecRunner.html-filen giver dig mulighed for at køre testen og se resultatet i browseren i et websideformat snarere end i konsolvinduet.
Src-biblioteket indeholder frontend-kildekoder, og spec-biblioteket indeholder testfiler, der er skrevet ved hjælp af Jasmine-testpakker. Som standard kan du se nogle testpakker og filer inde i telefonbøgerne, men vi vil ikke bruge disse, vi ville skrive vores egne tests i vores efterfølgende tutorials.
Brug af jasmin med en testløber
Dette er den anden måde at bruge Jasmine på, hvor du konfigurerer en testløber som Karma og fodrer den med din kildefil og testspecifikationsfilen til at køre testene.
Derefter kan du enten vise resultaterne og generere rapporter ved hjælp af Istanbul eller offentliggøre testresultaterne til coveralls.io.
Introduktion til Jasmine-Jquery
Jasmine-Jquery er en knudepakke, der hjælper med at teste front-end-koder bygget med jquery. På en måde udvider det Jasmine-rammen til at være velegnet til Jquery's front-end-test.
Udvidelserne det tilføjer til Jasmine-rammen inkluderer:
- Et sæt brugerdefinerede matchere til Jquery-rammen, såsom toBeChecked, toBeDisabled, toBeEmpty osv.
- En API til håndtering af HTML-, CSS- og JSON-inventar i vores specifikationer.
Nu er spørgsmålet 'hvad er en API?' En API (applikationsprogrammeringsgrænseflade) er en grænseflade, der giver dig adgang til visse funktioner, der kan tage tid og ressourcer for dig at opbygge fra bunden.
Et andet spørgsmål er, hvad der er inventar? Armaturer er foruddefinerede tilstande for et objekt, som vi normalt opretter, mens vi skriver tests for at etablere en baseline (et velkendt og fast miljø), som testene køres mod, for at gøre resultaterne gentagelige.
Se her for flere detaljer om de tilpassede matchere og API'er.
Konklusion
I denne vejledning forsøgte vi at forstå, hvad en testramme er, og vi introducerede Jasmine som en JavaScript-testramme. Vi kiggede på forskellige Jasmines konstruktioner, der kan bruges til at skrive testspecifikationer, og vi introducerede endelig Jasmine-Jquery, som er en node-baseret pakke, der udvider Jasmine til at kunne teste Jquery-applikationer.
Takeaways
- En testramme er en række programmer eller pakker, der letter test af softwaren for at sikre kvaliteten af den udviklede software.
- Jasmine er et adfærdsmæssigt drevet udviklingsværktøj, der leverer konstruktioner, der letter skrivning af testspecifikationer til JavaScript-applikationer.
- Testdrevet udvikling er en udviklingsmetode, hvor vi først skriver testene og derefter kører dem. Hver test mislykkes ved den allerførste udførelse, fordi den funktion, den bruger, endnu ikke er skrevet. Vi skriver derefter funktionerne og kører testene igen. Her fejler nogle af testene, og andre består. Derefter fortsætter vi med at omlægge koden, indtil alle testene er bestået.
- En adfærdsmæssig drevet udviklingsmetode er en udviklingsmetode, hvor test skrives for at fastslå, at softwarefunktionerne opfører sig som forventet af alle interessenter.
- Jasmine-Jquery er en knudepakke, der hjælper med at teste front-end-koder bygget med Jquery.
Næste tutorial
I vores kommende vejledning vil vi undersøge måderne at bruge disse to værktøjer (Jasmine og Karma) til at skrive testspecifikationer til et typisk projekt. Vi vil også se, hvordan man bruger de andre værktøjer, såsom gulp, browserify osv., Der kræves for at få vores tests i gang.
PREV-vejledning | NÆSTE vejledning
Anbefalet læsning
- 8 BDD-værktøjer og testrammer til bedste opførselsdrevne udvikling
- Hvordan testere er involveret i TDD, BDD & ATDD teknikker
- TDD vs BDD - Analyser forskellene med eksempler
- BDD (Behavior Driven Development) Framework: En komplet tutorial
- Sådan skriver du teststrategidokument (med prøve teststrategiskabelon)
- 10 bedste API-testværktøjer i 2021 (SOAP og REST API-testværktøjer)
- API-testvejledning: En komplet guide til begyndere
- Python DateTime-tutorial med eksempler