Tester son code JS dans tous les navigateurs ...
automatiquement !

Nicolas MEDDA - Christophe PROMÉ

Tester son code JS...

... dans tout les navigateurs ...

... dans tout les navigateurs ...


source : caniuse.com

... automatiquement

Live coding

Une TODO list

En TDD

Test unitaire

  • Tester une chose et une seule

  • Ignorer le reste du monde

Outils

Framework

Asserter

Test d'intégration / UI

  • On agit sur le DOM
  • Assertion sur l'état du DOM
  • Dans un browser

Outils

Runner

Framework

Asserter

e2e

  • On intègre le serveur

Outils

Maintenant qu'il y a un serveur...

  • TODO

stub

function Store() {}
Store.prototype.findAll = function() {
    console.log('je suis la vrai methode findAll');
}

store.findAll();
// => je suis la vrai methode findAll

sinon.stub(store, 'findAll').yields('Je suis le stub de store.findAll');

store.findAll(); // => Je suis le stub de store.findAll

// Équivalent à
store.findAll = function() {
    return 'Je suis le stub de store.findAll';
};

mock

var store = new Store();
var model = new Model(store);

var mock = sinon.mock(store);
mock.expects('findAll').once();

model.all();

mock.verify();
// On s'assure que la méthode all de model a bien appelé
// la methode findAll de store;

fakeServer

var server = sinon.fakeServer.create();
server.autoRespond = true;
server.respondWith('GET', '/elements', [200, {
    'Content-Type': 'application/json'
}, '["elem1", "elem2", "elem3"]']);

Store.findAll = function() {
    xhr.get('/elements' ...);
}

var store = new Store();
store.findAll();
// => L'appel xhr dans la methode recevra les données définie
//      dans server.respondWith
Mochahttp://visionmedia.github.io/mocha
Chaihttp://chaijs.com
Sinonhttp://sinonjs.org
Testemhttp://github.com/airportyh/testem
Karmahttp://karma-runner.github.io
CasperJShttp://casperjs.org
DalekJShttp://dalekjs.com
Effroihttp://github.com/francejs/effroi

http://github.com/b2l/testerSonCodeJsAutomatiquement

Merci !

Et testez bien !