Jasmine a pour objectif d’être facile à lire. Un simple test hello world ressemble au code ci-dessous, où describe() décrit une suite de tests et it() est une spécification de test individuelle. Le nom « it() » suit l’idée du développement guidé par le comportement et sert de premier mot dans le nom du test, qui doit être une phrase complète. L’utilisation suit une syntaxe similaire à celle de RSpec.
Le code ci-dessous teste cette fonction
function helloWorld() { return 'Hello world!';}
et vérifie que sa sortie est bien le texte « Hello world ! ».
describe('Hello world', function() { it('says hello', function() { expect(helloWorld()).toEqual('Hello world!'); });});
Jasmine fournit un riche ensemble de matchers intégrés. Dans l’exemple ci-dessus, toEqual vérifie l’égalité entre la valeur renvoyée par la fonction helloWorld() et la chaîne ‘Hello world!’. C’est la même chose que les assertions utilisées dans d’autres cadres de test. Les matchers de Jasmine renvoient simplement une valeur booléenne : true si l’attente est satisfaite (une façon d’indiquer que le test a réussi) ou false si l’attente ne correspond pas. Une bonne pratique consiste à mettre une seule attente dans une spécification de test it() individuelle.
Les autres matcheurs intégrés comprennent toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. Le comparateur d’identité toBe vérifie si deux choses sont le même objet. Les comparateurs de conditions toBeTruthy, toBeFalsy évaluent si quelque chose est vrai ou faux et toBeDefined, toBeUndefined vérifient si quelque chose est défini ou indéfini. Comme son nom l’indique, toBeNull vérifie si quelque chose est nul et toBeNaN vérifie si quelque chose n’est pas un nombre (NaN). Le comparateur de précision toBeCloseTo accepte deux paramètres et vérifie si un nombre est proche du premier paramètre, compte tenu d’une certaine précision décimale indiquée par le second paramètre. Le matcher toContain est utilisé pour vérifier qu’un élément, un objet ou une sous-chaîne est contenu dans un tableau, une liste ou une chaîne de caractères.
Le matcher intégré spécial toThrow est utilisé pour vérifier qu’une exception a été levée. Le code ci-dessous vérifie que « Some exception » est lancé.
describe('Expect to throw an exception', function() { it('throws some exception', function() { expect( function(){ throw('Some exception'); }).toThrow('Some exception'); });});
Jasmine dispose d’un certain nombre d’autres fonctionnalités, telles que des matcheurs personnalisés, des espions et la prise en charge des spécifications asynchrones.