Les tests
Différents types de tests
Tests unitaires
Tests fonctionnels
Tests d'intégration
Le principe
S'assurer que le code fonctionne
Eviter les régressions
S'adapter plus facilement (voir TDD)
Ce qu'on ne teste pas
- Si ce qui va autour fonctionne (librairies, frameworks, la BDD, etc)
- Les fonctions non-déterministes
AAA
Arrange : on met en place ce dont on a besoin
Act : on lance une action
Assert : on vérifie que tout se passe comme prévu
TDD
Test-Driven Development
- On écrit le test
- On écrit le code correspondant
- On itère jusqu'au résultat attendu
- On peaufine
Exemple : la calculatrice en JS
Le cas de base
On implémente l'addition ensemble puis vous ferez la division
calc.js
exports.add = (a, b) => {
if (Number.isInteger(a) && Number.isInteger(b)) {
return a + b;
} else {
throw Error("Invalid input");
}
};
calcTest.js
const calc = require("../src/calc");
const assert = require("assert");
describe("Test de la calculatrice", () => {
describe("Test de l'addition", () => {
it("Additionner deux nombres avec succès", () => {
assert.equal(calc.add(1, 1), 2);
})
it("Devrait renvoyer une erreur si on passe autre chose qu'un entier", () => {
assert.throws(() => calc.add("A", 1), {
name: 'Error',
message: 'Invalid input'
});
})
})
})
Petite parenthèse
exports/require : NodeJS
import/export: ES6
Ressources
Aller plus loin
[Grafikart] Spy, mock et stub avec Sinon
On peut aussi tester directement le comportement dans le navigateur :
- avec Nightmare.js
- dans Laravel avec Dusk
- Selenium
(ce qui peut sacrément faciliter la vie pour certains tests fonctionnels)
Les tests
By LauDev
Les tests
- 747