Quel est le problème dans le test ?
Quâest-ce qui ne va pas dans le test de pow ci-dessous ?
it("Raises x to the power n", function() {
let x = 5;
let result = x;
assert.equal(pow(x, 1), result);
result *= x;
assert.equal(pow(x, 2), result);
result *= x;
assert.equal(pow(x, 3), result);
});
P.S. Syntaxiquement, le test est correct et réussi.
Le test illustre lâune des tentations quâun développeur rencontre lorsquâil écrit des tests.
Ce que nous avons ici est en fait 3 tests, mais présentés comme une seule fonction avec 3 affirmations.
Parfois, il est plus facile dâécrire de cette façon, mais si une erreur se produit, ce qui a mal tourné est beaucoup moins évident.
Si une erreur survient au beau milieu dâun flux dâexécution complexe, alors nous devrons bien comprendre les données à ce stade. Nous devrons en fait déboguer le test.
Il serait bien préférable de diviser le test en plusieurs blocs it avec des entrées et des sorties clairement écrites.
Comme ceci :
describe("Raises x to power n", function() {
it("5 in the power of 1 equals 5", function() {
assert.equal(pow(5, 1), 5);
});
it("5 in the power of 2 equals 25", function() {
assert.equal(pow(5, 2), 25);
});
it("5 in the power of 3 equals 125", function() {
assert.equal(pow(5, 3), 125);
});
});
Nous avons remplacé lâit unique par un describe et un groupe dâit. Si quelque chose échouait, nous verrions clairement quelles étaient les données erronées.
Nous pouvons également isoler un seul test et lâexécuter en mode autonome en lâécrivant it.only à la place de it :
describe("Raises x to power n", function() {
it("5 in the power of 1 equals 5", function() {
assert.equal(pow(5, 1), 5);
});
// Mocha ne va exécuter que ce code
it.only("5 in the power of 2 equals 25", function() {
assert.equal(pow(5, 2), 25);
});
it("5 in the power of 3 equals 125", function() {
assert.equal(pow(5, 3), 125);
});
});