Jasmine (JavaScript-testraamwerk) - Jasmine (JavaScript testing framework)
| Ontwikkelaar(s) | Kernlabs |
|---|---|
| Eerste uitgave | 14 september 2010 |
| Stabiele vrijlating | 3.7.1 / 19 maart 2021
|
| Opslagplaats | |
| Geschreven in | JavaScript |
| Besturingssysteem | Cross-platform |
| Type | Hoofdstuk toets |
| Vergunning | MIT-licentie |
| Website |
jasmijn |
Jasmine is een open-source testraamwerk voor JavaScript . Het is bedoeld om op elk platform met JavaScript te draaien, om de applicatie of de IDE niet binnen te dringen en om een gemakkelijk leesbare syntaxis te hebben. Het wordt sterk beïnvloed door andere raamwerken voor het testen van eenheden, zoals ScrewUnit, JSSpec, JSpec en RSpec .
Geschiedenis
De ontwikkelaars van Pivotal Labs for Jasmine ontwikkelden eerder een vergelijkbaar raamwerk voor het testen van eenheden, JsUnit genaamd, voordat Jasmine actief werd ontwikkeld.
Functies
- Ondersteunt asynchrone testen.
- Maakt gebruik van 'spies' voor het implementeren van testdubbels .
- Ondersteunt het testen van front-end code via een front-end extensie van Jasmine genaamd Jasmine-jQuery.
Gebruik
Jasmine wil gemakkelijk te lezen zijn. Een eenvoudige hello world- test ziet eruit als de onderstaande code, waarbij description() een reeks tests beschrijft en it() een individuele testspecificatie is. De naam "it()" volgt het idee van gedragsgestuurde ontwikkeling en dient als het eerste woord in de testnaam, die een volledige zin zou moeten zijn. Het gebruik volgt een syntaxis die vergelijkbaar is met die van RSpec .
De onderstaande code test deze functie:
function helloWorld() {
return 'Hello world!';
}
en controleert of de uitvoer inderdaad de tekst "Hallo wereld!" is.
describe('Hello world', function() {
it('says hello', function() {
expect(helloWorld()).toEqual('Hello world!');
});
});
Jasmine biedt een rijke set ingebouwde matchers. In het bovenstaande voorbeeld controleert toEqual de gelijkheid tussen de waarde die wordt geretourneerd door de functie helloWorld() en de 'Hallo wereld!' snaar. Dit is hetzelfde als beweringen die in andere toetsingskaders worden gebruikt. Jasmine-matchers retourneren eenvoudigweg een Booleaanse waarde: waar als de verwachting overeenkomt (een manier om aan te geven dat de test is geslaagd) of onwaar als de verwachting niet overeenkomt. Een goede gewoonte is om een enkele verwachting in een individuele it()-testspecificatie te plaatsen.
Andere ingebouwde matchers zijn onder meer toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. De identiteit matcher toBe controleert of twee dingen hetzelfde object zijn. De condition matchers toBeTruthy, toBeFalsy evalueren of iets waar of onwaar is en toBeDefined, toBeUndefined controleren of iets gedefinieerd of niet gedefinieerd is. Zoals de naam al doet vermoeden, controleert toBeNull of iets null is en toBeNaN controleert of iets geen getal is ( NaN ). Precision matcher toBeCloseTo accepteert twee parameters en controleert of een getal dicht bij de eerste parameter ligt, gegeven een bepaalde hoeveelheid decimale precisie zoals aangegeven door de tweede parameter. Matcher toContain wordt gebruikt om te verifiëren dat een element, object of substring is opgenomen in een array, lijst of string.
De speciale ingebouwde matcher toThrow wordt gebruikt om te controleren of er een uitzondering is gegenereerd. De onderstaande code verifieert dat "Some exception" wordt gegenereerd.
describe('Expect to throw an exception', function() {
it('throws some exception', function() {
expect( function(){ throw('Some exception'); }).toThrow('Some exception');
});
});
Jasmine heeft een aantal andere functies, zoals aangepaste matchers, spionnen en ondersteuning voor asynchrone specificaties.
Jasmijn testlopers
Jasmine wordt geleverd met een ingebouwde testrunner. Jasmine-tests kunnen browsertests uitvoeren door een eenvoudig SpecRunner.html-bestand op te nemen of door het te gebruiken als een opdrachtregeltestrunner die wordt ondersteund voor verschillende talen zoals Nodejs, Python, Ruby of (oude manier) door Karma te gebruiken, een eenvoudige JavaScript-testrunner-tool .
Vergelijking tussen Jasmine en Mocha
Mocha is een ander populair Javascript-testraamwerk. De vergelijking tussen jasmijn en mokka staat in onderstaande tabel.
| Jasmijn | mokka |
|---|---|
| Jasmine wordt geleverd met testdubbels door spionnen te gebruiken. | Mocha wordt niet geleverd met een dubbele testbibliotheek en gebruikt over het algemeen een externe bibliotheek zoals Sinon. |
| Jasmine heeft een opdrachtregelprogramma om tests uit te voeren. | Mocha heeft een opdrachtregelprogramma om tests uit te voeren. |
| Jasmine heeft beweringen ingebouwd. | Mocha heeft geen bibliotheek met beweringen en gebruikt Chai voor beweringen. |
Voordelen
- Het doel van Jasmine is om browser-, framework-, platform- en taalonafhankelijk te zijn.
- Naast gedragsgestuurde ontwikkeling ondersteunt Jasmine ook testgestuurde ontwikkeling .
Zie ook
- Lijst met JavaScript-bibliotheken
- Lijst met kaders voor unit-testing
- Mocha (JavaScript-framework)
- QUnit