17
Tests unitaires JavaScript Xavier NOPRE – 14/05/2013 GRENOBLE

Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Embed Size (px)

DESCRIPTION

Slides et quelques captures d'écrans de ma présentation de Jasmine (pour les tests unitaires en JavaScript) lors de la soirée des Human Talks du 14/05/2013 à Grenoble

Citation preview

Page 1: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Tests unitaires JavaScript

Xavier NOPRE – 14/05/2013

GRENOBLE

Page 3: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Jasmine : C'est quoi ?

Un framework de tests unitaires pour JavaScript

fournit un cadre pour écrire les tests unitaires

Indépendant d'autres librairies

Ne nécessitant pas de DOM

Page 4: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Mise en route ?

Le site et la doc : http://pivotal.github.io/jasmine/

Télécharger le ZIP et dézipper :

https://github.com/downloads/pivotal/jasmine/jasmine-

standalone-1.3.1.zip

Afficher SpecRunner.html dans le navigateur

Editer :

Les tests dans le répertoire spec

Le code dans le répertoire src

Et pour mes tests ?

Page 5: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Jouer mes tests ?

Editer SpecRunner.html :

Page 6: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Et ça ressemble à quoi ? 1/2

Suite de tests :

describe("Ma suite de tests : ", function() {

...

});

Suite dans des suites :

describe("Ma suite de tests : ", function() {

...

describe("Suite dans la suite: ", function() {

...

});

});

Page 7: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Et ça ressemble à quoi ? 2/2

Code avant chaque test "before" :

beforeEach(function() {

...

});

Test :

it("should display initial message", function() {

expect(xxx).toEqual(yyy);

});

Etc …

Page 8: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Je veux voir !

Page 9: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Et tester le DOM ?

Extension jasmine-jquery :

https://github.com/velesin/jasmine-jquery

Ajoute des assertions spécifiques :

toBe(selector), toBeHidden, toHaveCss, toHaveAttr,

toBeFocused, …

Ajoute une API de chargement de fixtures HTML, CSS,

JSON

Usage :

Ajouter jasmine-jquery.js au test runner

Page 10: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Et tester mes requêtes Ajax ?

Extension jasmine-ajax :

https://github.com/pivotal/jasmine-ajax

Compatible avec jQuery

Permet de "mocker" les requêtes jQuery.ajax pour :

Vérifier ces requêtes et leurs paramètres

Simuler leurs succès, échecs, et données renvoyées

Usage :

Ajouter jasmine-ajax.js au test runner

Page 11: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Et actuellement, t'en es où ? (REX)

Jasmine (ou autre) : super !

Traitement de données, formatages, … : OK !

Tests sur le DOM : ….

Investissement important

Très proche du rendu (trop ? …)

Mais bien pratique !

Exemples

Page 12: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Xavier NOPRE :

Développeur logiciel passionné (Java & Web)

Pratique et partage l’agilité depuis 2007

Indépendant. Missions :

Développements sur mesure et accompagnement de projet

En mode agile

Coaching en agilité, Scrum, et ingénierie agile

MERCI

@xnopre xnopre.blogspot.com

Page 13: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Annexes

Retrouvez ici quelques captures des écrans

présentés lors de la session

Page 14: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Page de test Jasmine après unzip

Page 15: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Fichier : MesTests.js describe("Ma suite de tests : ", function() {

var message;

beforeEach(function() {

message = "Hello HumanTalks";

});

it("should display initial message", function() {

expect(message).toEqual("Hello HumanTalks");

});

describe("Une 'sous' suite de tests : ", function() {

it("should add Grenoble", function() {

message = htgre.expandForHTGrenoble(message);

expect(message).toEqual("Hello HumanTalks Grenoble");

});

});

});

Page 16: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Fichier : MonCode.js (function(){

window.htgre = {

expandForHTGrenoble: function(message) {

return message + " Grenoble";

}

};

})();

Page 17: Jasmine : tests unitaires en JavaScript - Human Talks Grenoble 14.05.2013

Page de test Jasmine avec mes tests démo