jasmine framework tutorial including jasmine jquery with examples
Den här artikeln täcker Jasmine Testing Framework & Its Constructs. Lär dig också om Jasmine-Jquery-paketet som utvidgar Jasmine till att testa Jquery-applikationer:
Vi lärde oss allt om Karma i vår tidigare handledning i denna serie.
I den här handledningen lär vi oss hur man använder Jasmine för att skriva tester för en JavaScript-webbapplikation och lär oss också hur man använder det nodbaserade paketet Jasmine-Jquery för att testa Jquery-webbapplikationen.
Här kommer vi främst att fokusera på de grundläggande Jasmine-konstruktionerna för att skriva tester.
hur man skriver manuella testfall med ett exempel
Låt oss börja!!
Vad du kommer att lära dig:
Vad är testramar?
Testing Frameworks är sviter av program eller paket som underlättar testning av ett annat program för att säkerställa dess kvalitet. Varje programmeringsplattform har sitt eget testramverk som du måste ha lärt dig från vår tidigare handledning.
Det finns olika uppsättningar tester som kan utföras på vilket programvarusystem som helst. Exempel av sådana tester inkluderar enhetstestning, testning från slut till slut (e2e) etc. Kontroll här för mer detaljer.
Exempel av testramar för JavaScript-applikationer inkluderar Mocha, Jasmine, praktikant, skämt, Qunit, etc.
Introduktion till Jasmine Framework
Det finns olika utvecklingsmetoder tillgängliga i dagens scenario. Av dessa inkluderar två av de mest populära utvecklingsmetoderna Test-Driven Development (TDD) och Behavior Driven Development (BDD).
Testdriven utveckling är ett utvecklingssätt där vi först skriver testerna och sedan kör dem. Varje test misslyckas vid dess allra första körning eftersom funktionerna det använder inte har skrivits ännu.
Vi skriver sedan funktionerna och kör testet igen. Här misslyckas några av testerna och de andra klarar. Vi fortsätter att omforma koden så att alla tester klaras.
Behavioral Driven Development följer också samma tillvägagångssätt. Den enda skillnaden är att BDD är skriven för att tillfredsställa ägare av programvaran (kund- / affärsinriktad), dvs för att uppfylla programvarufunktionerna med företagets krav eller förväntade beteende.
Medan TDD är skriven för att tillfredsställa utvecklarna av programvaran så att man kan vara säker på att programvarufunktionerna som används för att bygga funktionerna ger korrekta resultat, stabila och pålitliga.
Ser här för att veta mer om TDD vs BDD.
Jasmine är ett JavaScript-testramverk som är beteendestyrt, vilket gör skrivtest enkelt och inte beror på något annat ramverk.
Det finns två sätt att använda Jasmine för att skriva dina tester. Ett sätt är att använda den fristående versionen som levereras med specRunner.html (som visar testresultat i en webbläsare). Det andra sättet är att helt enkelt installera Jasmine, skriva dina tester och köra det med en testlöpare som Karma för att få resultaten att visas i konsolfönstret.
Vi skulle titta på båda sätten att använda Jasmine i vår kommande handledning.
Grundläggande Jasmine-konstruktioner för skrivtester
Nedan listas de olika konstruktionerna av Jasmine för att skriva tester.
Låt oss se!!
# 1) beskriver: Denna konstruktion används för att skriva en testsvit. En testsvit är en samling av flera tester. ”Beskriv” är en funktion i sig som tar två parametrar: Svitens namn och en funktion .
Funktionsparametern innehåller en samling tester grupperade under testsviten.
# 2) det: Denna konstruktion används för att skriva en testspecifikation. En testspecifikation är en uppsättning konstruktioner som testar en viss eller mycket liten förväntan för ett system.
Som beskriv konstruktion tar det också två parametrar: Namnet på testet och funktionen som innehåller påståendena som utvärderar om förväntningarna är uppfyllda eller inte.
# 3) förvänta dig : Denna konstruktion hjälper till att testa om förväntningarna från mjukvarusystemet uppfylls eller inte.
Det tar en parameter som kallas den faktiska (vilket är resultatet som mjukvarusystemet returnerar) och sedan kedjas den med en annan konstruktion som kallas en matcher (förväntat resultat).
# 4) Matchar : Detta är en samling konstruktioner som den förväntade konstruktionen är kedjad till. Den avgör om förväntningarna uppfylls eller inte.
Dessa konstruktioner tar det förväntade värdet av det närmaste testet som utförs och matchar det mot det verkliga värdet som erhålls vid genomförandet av testet. Klick här för en komplett lista över Jasmine matcher-konstruktioner
# 5) före varje : Detta är en global konstruktion som tillhandahålls av Jasmine för att hjälpa dig att hålla dina tester torra (upprepa inte dig själv). Denna konstruktion används normalt i funktionsparametern för den beskrivna konstruktionen.
Varje kod inuti körs en gång innan specifikationerna under sviterna körs. Därför bör all kod som du vill köra först innan alla specifikationer i sviten placeras här.
# 6) afterEach: Denna konstruktion är densamma som beforeEach, och skillnaden är att koden den innehåller körs efter varje kod när beskrivningskonstruktionen har körts.
# 7) detta : Den här konstruktionen är ett tomt objekt som kan användas för att dela värden över 'före varje', 'efter varje' och 'det' konstrueras i alla testsviter. Varje testsvit har sitt eget objekt och objektet återställs till tomt innan testsviterna körs.
# 8) xbeskriv : Denna konstruktion används för att inaktivera programvarusviterna. Det berättar helt enkelt testlöparen att hoppa över testpaketet och resultatet visas därför och beaktas inte.
# 9) hit : Denna konstruktion används för att indikera en specifikation i en svit som en väntande specifikation. En väntande specifikation är en specifikation som inte kommer att köras men vars namn visas i testresultatet som väntande.
Om den väntande funktionen i någon spec kallas, markeras också specifikationen som en väntande specifikation. Alla specifikationer som deklarerats utan en funktionsdel är också taggade som väntande.
# 10) spyOn : Denna konstruktion används för att skapa en Jasmine-spion. Spioner är hånar. Hånar är falska föremål som skapats för att representera eller efterlikna det verkliga föremålet. Hånar krävs för att förhindra allmänna kostnader för att skapa det verkliga objektet som de representerar.
Kärnan i att testa en kod är att se hur en funktion beter sig under flera förhållanden oberoende av de andra enheterna som är anslutna eller kommer att anslutas till den.
Således utför vi test av front-end-enheter för att se hur en enhet i front-enden av vår programvaruprodukt kommer att fungera oberoende av de andra front-end-enheterna som kommer att anslutas eller är anslutna till den.
Under detta test ringer vi till olika argument och funktioner som kan vara beroende av andra funktioner och objekt som nätverksanslutningar, datakällor och filer.
vad är den bästa dvd-klipparen
För att möta dessa beroenden (så att vi kan utföra front-end-enhetstester), finns det ett behov av att göra de nödvändiga resurserna tillgängliga. Därför adopterar vi mocks för att efterlikna verkliga objekt och undvika allmänna kostnader för att faktiskt skapa dem.
Observera att på en enkel nivå används spyOn för att testa om en beroende funktion faktiskt anropas, och denna beroende funktion kan bara vara en enkel funktion som definieras på det objekt som vi spionerar.
SpyOn-funktionen tar två parametrar: objektet som spioneras och beroendefunktionen den innehåller som kontrolleras för att säkerställa att vår funktion kallar det.
Spioner finns i sviten eller specifikationen där den definieras. Efter att sviten eller specifikationen har körts slutar spionen att existera.
# 11) createSpy: Denna konstruktion tjänar samma syfte som spyOn, men skillnaden är att den här funktionen gör det möjligt att ersätta den beroende funktionen med en falsk för testning.
Varför måste jag göra det här? Detta är användbart när det ursprungliga beroendet också är beroende av andra resurser som inte är tillgängliga i testets sammanhang.
Denna funktion nås med Jasmine-objektet med en punkt, dvs Jasmine.createSpy (parametrar). Det tar bara en parameter, som är en sträng som representerar namnet på det beroende som vi skapar mocken för.
Observera att efter att ha skapat en spion, återvänder spionen vid det första samtalet odefinierad, eftersom det första samtalet antas vara dess utbildning. Efter efterföljande samtal returnerar funktionen det faktiska värdet. Se mer information när vi utforskar det nedan.
Jasmintest dubbel funktion funktion
Konstruktionerna spyOn och createSpy gör det möjligt att skapa mocks (för beroende). Detta är ingen annan sak än att testa två funktioner i ett test, alltså uttalandet 'test dubbel funktion'.
Det andra ordet som kan användas för att hänvisa till hånar är ”stubbar”.
Spy Matchers: Det finns flera matchare som tillgodoser behovet av att interagera med spioner. De inkluderar: 'ToHaveBeenCalled' och 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : Detta används i en specifikation för att bestämma att det beroende som spionerades anropades.
- toHaveBeenCalledWith : Detta används i en specifikation för att bestämma att beroendet som spioneras anropades med en viss uppsättning parametrar.
Besök här för en detaljerad beskrivning av alla Jasmine-konstruktioner.
hur man spelar en mkv-fil
Två sätt att använda jasmin
Det finns två sätt att skriva Jasmine-test. Den ena är att använda Jasmine som en fristående distribution via specRunner och den andra använder Jasmine med testlöpare.
Låt oss först titta på att köra Jasmine-tester via specRunner.
Hur man använder jasmin fristående distribution?
Klick här och hämta sedan den fristående distributionen genom att klicka på Jasmin-fristående .
Packa upp filen till projektmappen. Du kommer att upptäcka att den lägger till dessa kataloger i projektkatalogen: lib, src och spec; och lägger också till dessa filer: specRunner.html och MIT.LICENSE.
Lib-katalogen innehåller Jasmine-biblioteket som kör testerna i de testfiler som läggs till i filen specRunner.html. SpecRunner.html-filen gör att du kan köra testet och visa resultatet i webbläsaren i ett webbsidformat snarare än i konsolfönstret.
Src-katalogen innehåller källkoderna i front-end, och spec-katalogen innehåller testfilerna skrivna med Jasmine-testsviter. Som standard kan du se några testsviter och filer i katalogerna men vi ska inte använda dessa, vi skulle skriva våra egna tester i våra efterföljande handledning.
Använda Jasmine With A Test-Runner
Detta är det andra sättet att använda Jasmine, där du konfigurerar en testkörare som Karma och matar den med din källfil och testspecifikationen för att köra testerna.
Sedan kan du antingen visa resultaten och generera rapporter med Istanbul eller publicera testresultaten till coveralls.io.
Introduktion till Jasmine-Jquery
Jasmine-Jquery är ett nodpaket som hjälper testning av front-end-koder byggda med jquery. På ett sätt utvidgar det Jasmine-ramverket till att vara väl lämpat för Jquerys front-end-test.
Tilläggen som läggs till i Jasmine-ramen inkluderar:
- En uppsättning anpassade matchare för Jquery-ramverket, till exempel toBeChecked, toBeDisabled, toBeEmpty, etc.
- Ett API för hantering av HTML-, CSS- och JSON-fixturer i våra specifikationer.
Nu är frågan 'vad är ett API?' Ett API (applikationsprogrammeringsgränssnitt) är ett gränssnitt som ger dig tillgång till vissa funktioner som kan ta tid och resurser för dig att bygga från grunden.
En annan fråga är vad är armaturer? Fixturer är fördefinierade tillstånd för ett objekt som vi vanligtvis skapar när vi skriver tester för att skapa en baslinje (en välkänd och fast miljö) mot vilken testerna körs för att göra resultaten repeterbara.
Ser här för mer information om anpassade matchare och API (er).
Slutsats
I denna handledning försökte vi förstå vad ett testramverk är och vi introducerade Jasmine som ett JavaScript-testramverk. Vi tittade på olika Jasmines konstruktioner som kan användas för att skriva testspecifikationer och vi introducerade äntligen Jasmine-Jquery som är ett nodbaserat paket som utökar Jasmine för att kunna testa Jquery-applikationer.
Takeaways
- Ett testramverk är en serie program eller paket som underlättar testning av programvaran för att säkerställa kvaliteten på den utvecklade programvaran.
- Jasmine är ett beteendedrivet utvecklingsverktyg som tillhandahåller konstruktioner som underlättar skrivning av testspecifikationer för JavaScript-applikationer.
- Testdriven utveckling är ett utvecklingssätt där vi först skriver testerna och sedan kör dem. Varje test misslyckas vid dess allra första körning eftersom funktionen den använder ännu inte har skrivits. Vi skriver sedan funktionerna och kör igen testerna. Här misslyckas några av testerna och andra klarar. Sedan fortsätter vi att omforma koden tills alla tester klarar.
- En beteendestyrd utvecklingsstrategi är en utvecklingsstrategi där test skrivs för att säkerställa att programvarufunktionerna beter sig som förväntat av alla intressenter.
- Jasmine-Jquery är ett nodpaket som hjälper till att testa front-end-koder byggda med Jquery.
Nästa handledning
I vår kommande handledning kommer vi att undersöka sätten att använda dessa två verktyg (Jasmine och Karma) för att skriva testspecifikationer för ett typiskt projekt. Vi skulle också se hur man använder andra verktyg som gulp, browserify, etc. som krävs för att våra tester ska vara igång.
PREV-handledning | NÄSTA självstudie
Rekommenderad läsning
- 8 bästa beteendrivna utvecklingsverktyg (BDD) och testramar
- Hur testarna är involverade i TDD-, BDD- och ATDD-tekniker
- TDD vs BDD - Analysera skillnaderna med exempel
- BDD (Behavior Driven Development) Framework: A Complete Tutorial
- Hur man skriver teststrategidokument (med exempel på teststrategimall)
- De 10 bästa API-testverktygen 2021 (SOAP och REST API-testverktyg)
- API Testing Tutorial: En komplett guide för nybörjare
- Python DateTime-handledning med exempel