jasmine framework tutorial including jasmine jquery with examples
Dit artikel behandelt Jasmine Testing Framework en zijn constructies. Lees ook meer over het Jasmine-Jquery-pakket dat Jasmine uitbreidt om JQuery-applicaties te testen:
We hebben er alles over geleerd Karma in onze vorige tutorial in deze serie.
In deze tutorial zullen we leren hoe we Jasmine kunnen gebruiken om tests voor een JavaScript-webapplicatie te schrijven en ook hoe we het op knooppunten gebaseerde pakket Jasmine-Jquery kunnen gebruiken om de Jquery-webapplicatie te testen.
Hier zullen we ons voornamelijk concentreren op de basisconstructies van Jasmine voor het schrijven van tests.
beste gratis pc-cleaner-software voor Windows 10
Laten we beginnen!!
Wat je leert:
Wat zijn testframeworks?
Testkaders zijn programma's of pakketten die het testen van een ander programma vergemakkelijken om de kwaliteit ervan te waarborgen. Elk programmeerplatform heeft zijn eigen testraamwerk, zoals u moet hebben geleerd van onze vorige tutorial.
Er zijn verschillende sets tests die op elk softwaresysteem kunnen worden uitgevoerd. Voorbeelden van dergelijke tests zijn onder meer unit testing, end to end (e2e) testen, etc. Check hier voor meer details.
Voorbeelden van testframeworks voor JavaScript-applicaties zijn onder andere Mocha, Jasmine, intern, jest, Qunit, etc.
Inleiding tot Jasmine Framework
Er zijn verschillende ontwikkelingsbenaderingen beschikbaar in het huidige scenario. Hiervan zijn twee van de meest populaire ontwikkelingsbenaderingen Test-Driven Development (TDD) en Behavior Driven Development (BDD).
Test-Driven Development is een ontwikkelingsaanpak waarbij we eerst de tests schrijven en ze vervolgens uitvoeren. Elke test mislukt bij de allereerste uitvoering omdat de functies die het gebruikt nog niet zijn geschreven.
Vervolgens schrijven we de functies en voeren we de tests opnieuw uit. Hier mislukken sommige tests en de andere slagen. We blijven de code herstructureren om alle tests te laten slagen.
Gedragsgestuurde ontwikkeling volgt ook dezelfde aanpak. Het enige verschil is dat BDD is geschreven om eigenaren van de software tevreden te stellen (klant- / bedrijfsgericht), d.w.z. om te voldoen aan de softwarefuncties met de zakelijke vereisten of het verwachte gedrag.
Terwijl TDD is geschreven om de ontwikkelaars van de software tevreden te stellen, zodat er zeker van kan zijn dat de softwarefuncties die worden gebruikt bij het bouwen van de functies nauwkeurige resultaten opleveren, stabiel en betrouwbaar.
Zien hier om meer te weten over TDD versus BDD.
Jasmine is een JavaScript-testraamwerk dat gedragsgestuurd is, wat het schrijven van tests eenvoudig maakt en niet afhankelijk is van een ander raamwerk.
Er zijn twee manieren om Jasmine te gebruiken om uw tests te schrijven. Een manier is om de zelfstandige versie te gebruiken die wordt geleverd met specRunner.html (die testresultaten in een browser weergeeft). De andere manier is om simpelweg Jasmine te installeren, je tests te schrijven en het uit te voeren met een testrunner zoals Karma om de resultaten in het consolevenster te krijgen.
We zouden in onze aanstaande tutorial naar beide manieren kijken om Jasmine te gebruiken.
Basisconstructies van Jasmine voor het schrijven van tests
Hieronder staan de verschillende constructies van Jasmine voor schrijftoetsen vermeld.
Laten we eens kijken!!
# 1) beschrijft: Dit construct wordt gebruikt om een testsuite te schrijven. Een testsuite is een verzameling van meerdere tests. ‘Beschrijven’ is een functie op zich waaraan twee parameters moeten voldoen: De naam van de suite en een functie
De functieparameter bevat een verzameling tests die zijn gegroepeerd onder de testsuite.
# 2) het: Dit construct wordt gebruikt om een testspecificatie te schrijven. Een testspecificatie is een reeks constructies die een bepaalde of zeer kleine verwachting voor een systeem testen.
Net als beschrijven construct, zijn er ook twee parameters nodig: De naam van de test en de functie die de beweringen bevat die evalueren of de verwachting is vervuld of niet.
# 3) verwachten : Dit construct helpt bij het testen of aan de verwachtingen van het softwaresysteem wordt voldaan of niet.
Er is een parameter voor nodig die de feitelijke wordt genoemd (wat het resultaat is dat het softwaresysteem retourneert) en vervolgens wordt het gekoppeld aan een ander construct genaamd een matcher (verwachte uitkomst).
# 4) Wedstrijden : Dit is een verzameling constructies waaraan het verwachte construct is vastgeketend. Het bepaalt of de verwachting wordt vervuld of niet.
Deze constructies nemen de verwachte waarde van de dichtstbijzijnde test die wordt uitgevoerd en vergelijken deze met de werkelijke waarde die wordt verkregen bij het uitvoeren van de test. Klik hier voor een complete lijst van Jasmine matcher constructies
# 5) voor elk : Dit is een wereldwijde constructie, geleverd door Jasmine om u te helpen uw tests DROOG te houden (herhaal uzelf niet). Dit construct wordt normaal gesproken gebruikt in de functieparameter van het beschrijvingsconstruct.
Elke code binnenin wordt eenmaal uitgevoerd voordat de specificaties onder de suites worden uitgevoerd. Daarom moet elke code die u eerst wilt laten draaien voordat alle specificaties in de suite hier worden geplaatst.
# 6) na Elk: Dit construct is hetzelfde als beforeEach, en het verschil is dat de code die het bevat wordt uitgevoerd na elke code zodra het beschrijvingsconstruct is uitgevoerd.
webservices interviewvragen en antwoorden
# 7) dit : Dit construct is een leeg object dat kan worden gebruikt om waarden te delen tussen ‘beforeEach’, ‘afterEach’ en ‘it’ constructies in alle testsuites. Elke testsuite heeft zijn eigen object en het object wordt gereset naar leeg voordat de testsuites worden uitgevoerd.
# 8) xdescribe : Deze constructie wordt gebruikt om de softwarepakketten uit te schakelen. Het vertelt de testrunner eenvoudigweg om de testsuite over te slaan en daarom wordt het resultaat niet weergegeven en overwogen.
# 9) hit : Deze constructie wordt gebruikt om een specificatie in een suite aan te duiden als een lopende specificatie. Een in behandeling zijnde specificatie is een specificatie die niet wordt uitgevoerd, maar waarvan de naam in het testresultaat wordt weergegeven als in behandeling.
Als in een specificatie de pending-functie wordt aangeroepen, wordt de specificatie gemarkeerd als een pending spec. Elke specificatie die is gedeclareerd zonder een functie-body, wordt ook getagd als in behandeling.
# 10) SpyOn : Dit construct wordt gebruikt om een Jasmine-spion te maken. Spionnen zijn bespottelijk. Mocks zijn nep-objecten die zijn gemaakt om het echte object te vertegenwoordigen of na te bootsen. Mocks zijn nodig om de overheadkosten van het creëren van het echte object dat ze vertegenwoordigen te voorkomen.
De essentie van het testen van een code door een eenheid is om te zien hoe een functie zich gedraagt onder verschillende omstandigheden, onafhankelijk van de andere aangesloten eenheden of zullen ermee worden verbonden.
Daarom voeren we front-end unit-testen uit om te zien hoe een unit van de front-end van ons softwareproduct zich onafhankelijk zal gedragen van de andere front-end units die ermee verbonden zullen worden of zijn.
Tijdens deze test roepen we verschillende argumenten en functies op die mogelijk afhankelijk zijn van andere functies en objecten, zoals netwerkverbindingen, gegevensbronnen en bestanden.
Om aan deze afhankelijkheden te voldoen (zodat we front-end unit testing kunnen uitvoeren), is het nodig om de benodigde resources beschikbaar te stellen. Daarom gebruiken we spot om de objecten uit de echte wereld na te bootsen en de overheadkosten van het daadwerkelijk maken ervan te vermijden.
Merk op dat op een eenvoudig niveau spyOn wordt gebruikt om te testen of een afhankelijke functie daadwerkelijk wordt aangeroepen, en dat deze afhankelijke functie misschien gewoon een eenvoudige functie is die is gedefinieerd op het object dat we bespioneren.
De functie spyOn heeft twee parameters: het object dat wordt bespioneerd en de afhankelijkheidsfunctie die het bevat, die wordt gecontroleerd om er zeker van te zijn dat onze functie het aanroept.
Er bestaan spionnen in de suite of specificatie waarin het is gedefinieerd. Nadat de suite of specificatie is uitgevoerd, houdt de spion op te bestaan.
# 11) createSpy: Deze constructie heeft hetzelfde doel als spyOn, maar het verschil is dat deze functie het mogelijk maakt om de afhankelijke functie te vervangen door een nepfunctie om te testen.
Waarom moet ik dit doen? Dit is handig wanneer de oorspronkelijke afhankelijkheid ook afhankelijk is van de andere bronnen die niet beschikbaar zijn in de context van de test.
Deze functie is toegankelijk met het Jasmine-object met een punt, d.w.z. Jasmine.createSpy (parameters). Er is slechts één parameter nodig, namelijk een tekenreeks die de naam vertegenwoordigt van de afhankelijkheid waarvoor we de mock maken.
Merk op dat na het maken van een spion, de spion van de eerste oproep ongedefinieerd terugkeert, aangezien wordt aangenomen dat de eerste oproep zijn training is. Vervolgens, na volgende aanroepen, retourneert de functie de werkelijke waarde. Zie meer details terwijl we deze hieronder verkennen.
Jasmine Test Double Function Feature
De constructies spyOn en createSpy maken het maken van schijnvertoningen (voor afhankelijkheid) mogelijk. Dit is niets anders dan het testen van twee functies in één test, vandaar de uitspraak “test dubbele functie”.
Het andere woord dat kan worden gebruikt om naar schijnvertoningen te verwijzen, is ‘stubs’.
Spy Matchers: Er zijn verschillende matchers die voorzien in de behoefte om met spionnen om te gaan. Ze bevatten: ‘ToHaveBeenCalled’ en ‘toHaveBeenCalledWith’
-
- toHaveBeenCalled : Dit wordt gebruikt in een specificatie om te bepalen dat de afhankelijkheid die wordt bespioneerd, is aangeroepen.
- toHaveBeenCalledWith : Dit wordt gebruikt in een specificatie om te bepalen dat de afhankelijkheid die wordt bespioneerd, werd aangeroepen met een bepaalde set parameters.
Bezoek hier voor een gedetailleerd overzicht van alle Jasmine-constructies.
hoe open je een getorenteerd bestand
Twee manieren om jasmijn te gebruiken
Er zijn twee manieren om Jasmine-tests te schrijven. Een daarvan is om Jasmine te gebruiken als een zelfstandige distributie via specRunner en de andere gebruikt Jasmine met testrunner.
Laten we eerst kijken naar het uitvoeren van Jasmine-tests via de specRunner.
Hoe Jasmine Standalone Distribution te gebruiken?
Klik hier , en download vervolgens de zelfstandige distributie door op te klikken Jasmine-standalone
Pak het bestand uit in de projectmap. U zult ontdekken dat het deze mappen aan de projectmap toevoegt: lib, src en spec; en voegt ook deze bestanden toe: specRunner.html en MIT.LICENSE.
De lib-directory bevat de Jasmine-bibliotheek die de tests uitvoert die zijn opgenomen in de testbestanden die zijn toegevoegd aan het bestand specRunner.html. Met het bestand specRunner.html kunt u de test uitvoeren en het resultaat in de browser bekijken in een webpagina-indeling in plaats van in het consolevenster.
De src-directory bevat de front-end-broncodes en de spec-directory bevat de testbestanden die zijn geschreven met Jasmine-testsuites. Standaard kunt u enkele testsuites en bestanden in de mappen zien, maar we gaan deze niet gebruiken, we zouden onze eigen tests schrijven in onze volgende tutorials.
Jasmine gebruiken met een testrunner
Dit is de tweede manier om Jasmine te gebruiken, waarbij je een testrunner zoals Karma configureert en deze voedt met je bronbestand en het testspecificatiebestand om de tests uit te voeren.
Vervolgens kunt u de resultaten weergeven en rapporten genereren met Istanbul of de testresultaten publiceren op overall.io.
Inleiding tot Jasmine-Jquery
Jasmine-Jquery is een node-pakket dat helpt bij het testen van front-end codes die zijn gebouwd met jQuery. In zekere zin breidt het het Jasmine-framework uit om goed geschikt te zijn voor Jquery's front-end-testen.
De extensies die het toevoegt aan het Jasmine-framework zijn onder meer:
- Een set aangepaste matchers voor het JQuery-framework, zoals toBeChecked, toBeDisabled, toBeEmpty, etc.
- Een API voor het verwerken van HTML-, CSS- en JSON-armaturen in onze specificaties.
Nu is de vraag 'wat is een API?' Een API (Application Programming Interface) is een interface die u toegang geeft tot bepaalde functies die tijd en middelen kunnen kosten om helemaal opnieuw te bouwen.
Een andere vraag is wat zijn armaturen? Fixtures zijn vooraf gedefinieerde toestanden van een object die we gewoonlijk creëren tijdens het schrijven van tests om een basislijn vast te stellen (een bekende en vaste omgeving) waartegen de tests worden uitgevoerd om de resultaten herhaalbaar te maken.
Zien hier voor meer informatie over de aangepaste matchers en API ('s).
Gevolgtrekking
In deze tutorial hebben we geprobeerd te begrijpen wat een testraamwerk is, en hebben we Jasmine geïntroduceerd als een JavaScript-testraamwerk. We hebben verschillende constructies van Jasmine bekeken die kunnen worden gebruikt om testspecificaties te schrijven, en we hebben eindelijk Jasmine-Jquery geïntroduceerd, een op knooppunten gebaseerd pakket dat Jasmine uitbreidt om Jquery-applicaties te kunnen testen.
Afhaalrestaurants
- Een testframework is een reeks programma's of pakketten die het testen van de software vergemakkelijken om de kwaliteit van de ontwikkelde software te waarborgen.
- Jasmine is een gedragsgestuurde ontwikkelingstool die constructies biedt die het schrijven van testspecificaties voor JavaScript-applicaties vergemakkelijken.
- Test-Driven Development is een ontwikkelingsaanpak waarbij we eerst de tests schrijven en ze vervolgens uitvoeren. Elke test mislukt bij de allereerste uitvoering omdat de functie die het gebruikt nog niet is geschreven. Vervolgens schrijven we de functies en voeren we de tests opnieuw uit. Hier mislukken sommige tests en andere slagen. Vervolgens blijven we de code herstructureren totdat alle tests slagen.
- Een gedragsgestuurde ontwikkelingsaanpak is een ontwikkelingsaanpak waarbij tests worden geschreven om vast te stellen dat de softwarefuncties zich gedragen zoals verwacht door alle belanghebbenden.
- Jasmine-Jquery is een node-pakket dat helpt bij het testen van front-end codes gebouwd met Jquery.
Volgende tutorial
In onze aanstaande tutorial zullen we de manieren onderzoeken om deze twee tools (Jasmine en Karma) te gebruiken om testspecificaties voor een typisch project te schrijven. We zouden ook zien hoe we de andere tools kunnen gebruiken, zoals gulp, browserify, etc. die nodig zijn om onze tests uit te voeren.
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- 8 Best Behavior Driven Development (BDD) tools en testkaders
- Hoe de testers worden betrokken bij TDD-, BDD- en ATDD-technieken
- TDD versus BDD - Analyseer de verschillen met voorbeelden
- BDD-framework (Behavior Driven Development): een complete zelfstudie
- Hoe een teststrategiedocument te schrijven (met voorbeeldteststrategiesjabloon)
- 10 beste API-testtools in 2021 (SOAP- en REST API-testtools)
- API-testhandleiding: een complete gids voor beginners
- Python DateTime-zelfstudie met voorbeelden