Jasmine (JavaScript test framework)

Jasmine wil eenvoudig te lezen zijn. Een eenvoudige hello world-test ziet er uit als de onderstaande code, waarbij describe() 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 moet 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 van ingebouwde matchers. In het bovenstaande voorbeeld, controleert toEqual de gelijkheid tussen de waarde geretourneerd uit de helloWorld() functie en de “Hallo wereld!” string. Dit is hetzelfde als asserties gebruikt in andere test frameworks. Jasmine matchers geven gewoon een Booleaanse waarde terug: true als de verwachting overeenkomt (een manier om aan te geven dat de test geslaagd is) of false als de verwachting niet overeenkomt. Een goede gewoonte is om een enkele verwachting in een individuele it() testspecificatie te zetten.

Andere ingebouwde matchers zijn toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. De identiteitmatcher toBe controleert of twee dingen hetzelfde object zijn. De voorwaarde matchers toBeTruthy, toBeFalsy evalueren of iets waar of onwaar is en toBeDefined, toBeUndefined controleren of iets gedefinieerd of ongedefinieerd is. Zoals de naam al doet vermoeden controleert toBeNull of iets nul is en toBeNaN of iets geen getal is (NaN). Precisie-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. De matcher toContain wordt gebruikt om te controleren of een element, object of sub-string is opgenomen in een array, lijst of string.

De speciale ingebouwde matcher toThrow wordt gebruikt om te controleren of er een exception is gegooid. De code hieronder controleert of “Some exception” is gegooid.

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 mogelijkheden, zoals aangepaste matchers, spionnen, en ondersteuning voor asynchrone specificaties.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *