Donc nous avons vu dans le chapitre précédent comment créer des tests simples. Nous allons voir un petit peu plus en profondeur certaines méthodes qui vont nous permettre de créer des tests plus complexes.
Tester du code Asynchrone
le JavaScript fonctionne très souvent avec des callbacks, ou des promesses qui vont se résoudre de manière asynchrone.
it('should call callAPI', function(){
Social.getTwitterCount(url).then(function(count){
expect(count).to.be.equal(3);
});
})
Le test va passer quoiqu'il arrive même si la valeur de count n'est pas égale à 3. Mocha n'attend pas la fin de l'exécution et considère le test comme bon. Pour remédier au problème, il suffit de passer dans la fonction un paramètre qui servira de callback pour indiquer la fin de l'éxécution du test.
Ainsi, le test précédent devra s'écrire de la manière suivante :
it('should call callAPI', function(done){
Social.getTwitterCount(url).then(function(count){
expect(count).to.be.equal(3);
done();
});
})
Il est aussi possible de retourner dans un test, une promesse. Dans ce cas-là, mocha attendra la fin de l'exécution de cette promesse avant de passer au test suivant.
Les hooks
Lors de tests plus compliqués, il sera impératif de préparer l'environnement avant d'exécuter tel ou tel test. Pour cela on va pouvoir utiliser les hooks.
- before, qui sera exécuté avant la série de tests
- beforeEach, qui sera exécuté avant chaque test
- afterEach, qui sera exécuté après chaque test
- after, qui sera exécuté après la série de tests