Tests unitaires
Tests fonctionnels
Tests d'intégration
S'assurer que le code fonctionne
Eviter les régressions
S'adapter plus facilement (voir TDD)
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
Test-Driven Development
On implémente l'addition ensemble puis vous ferez la division
exports.add = (a, b) => {
if (Number.isInteger(a) && Number.isInteger(b)) {
return a + b;
} else {
throw Error("Invalid input");
}
};
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'
});
})
})
})
exports/require : NodeJS
import/export: ES6
[Grafikart] Spy, mock et stub avec Sinon
On peut aussi tester directement le comportement dans le navigateur :
(ce qui peut sacrément faciliter la vie pour certains tests fonctionnels)