Retour à la leçonMission
Mission : la suite de tests qui échoue seulement dans un certain ordre
Diagnostiquer une suite de tests busted dont les résultats dépendent de l'ordre d'exécution, puis choisir entre spy et stub pour isoler une dépendance externe.
Contexte
Un développeur écrit ces tests pour le module Inventory avec busted :
lua
local Inventory = require("inventory")
local inv = Inventory.new(3) -- créé UNE SEULE FOIS, en dehors de before_each
describe("Inventory", function()
it("ajoute un item quand il y a de la place", function()
local ok = inv:add("epee")
assert.is_true(ok)
assert.equals(1, inv.count)
end)
it("lève une erreur quand l'inventaire est plein", function()
inv:add("a"); inv:add("b") -- ajoute seulement 2, en comptant sur le 1 déjà présent du test précédent
assert.has_error(function()
inv:add("d")
end, "Inventaire plein")
end)
end)Ces deux tests passent quand ils sont exécutés dans cet ordre précis. Mais dès que l'équipe réorganise les fichiers de test ou en ajoute un nouveau avant celui-ci, le deuxième test échoue de façon imprévisible, sans qu'aucune ligne du module Inventory n'ait changé.