Human Talks Jasmine

297 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
297
Sur SlideShare
0
Issues des intégrations
0
Intégrations
57
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Human Talks Jasmine

  1. 1. Jasmine MOAR TESTS
  2. 2. Le problème
  3. 3. La fausse solution
  4. 4. Les outils ● RequireJS pour modulariser http://requirejs.org/ ● Jasmine pour tester http://pivotal.github.io/jasmine/
  5. 5. Que fait RequireJS ? Il permet de gérer les dépendances de chaque fichier : models/truc.js: <module> <deps> <callback> define('models/truc', ['backbone'], function(Backbone) { return Backbone.Model.extend({}); });
  6. 6. Dans quel but ? ● S'assurer qu'un fichier est correctement chargé avec ses dépendances ● Pouvoir ne charger que ce dont on a besoin ● Utiliser r.js pour minifier le tout
  7. 7. Comment utiliser Jasmine ? ● Page web “classique”, pratique pour test/debug ● Automatisé avec NodeJS, pour intégration continue
  8. 8. Test simple tests/models/truc.js: define('tests/models/truc', ['models/truc'], function(Truc) { describe('models/truc', function() { describe('someFunction()', function() { it('always returns true', function() { expect(new Truc().someFunction()).toBe(true); }); }); }); });
  9. 9. Quelques fonctions ● .toBe() ● .not.toBe() ● .toMatch(/regexp/) ● .toBeDefined() ● .toBeNull() http://pivotal.github.io/jasmine/#section-Expectations
  10. 10. Hiérarchie ● Imbriquez les describe() à volonté ! ● describe(module) – describe(sous-module) ● describe(classe) – describe(fonction)
  11. 11. beforeEach() et afterEach() ● Respectivement exécuté avant et après chaque test ● Concerne seulement le describe() en cours describe('whatever', function() { var truc; beforeEach(function() { truc = new Truc(); }); });
  12. 12. Espions ● Intercepte une fonction ● Ne l'exécute pas ● Vérifie son exécution ● Génère un retour
  13. 13. Syntaxe des espions spyOn(truc, 'someFunction'); truc.someFunction(123); expect(truc.someFunction).toHaveBeenCalled(); expect(truc.someFunction).toHaveBeenCalledWith(123);
  14. 14. Options ● spyOn().andCallThrough() pour que la fonction soit tout de même appelée ● spyOn().andReturn(123) pour que la fonction retourne une valeur particulière ● spyOn().andCallFake(function(){}) pour remplacer la fonction par une autre
  15. 15. Et l'asynchrone ? runs(function() { doSomeAjax(function callback() { truc.someProperty = true; }); }); waitsFor(function() { return truc.someProperty; }, 'should do something', 1000); // 1000 = timeout runs(function() { expect(truc.someProperty).toBe(true); });
  16. 16. Donc ? ● Tester son code, c'est bien ● Utiliser Jasmine, c'est mieux ● Avec RequireJS ?
  17. 17. 1MD2Pm2cbmdgNVkP5kH6cYHZvBDYQFCQnC

×