Retour aux cas pratiques
Tests UnitairesExpert
Corriger un test avec timer asynchrone non maîtrisé
Scénario
Contexte Une fonction debounce(fn, delay) utilise setTimeout pour retarder l’exécution. Le Problème Le test suivant échoue aléatoirement : function debounce(fn, delay) { let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(() => fn(...args), delay); }; } test("appelle la fonction après délai", () => { const mockFn = jest.fn(); const debounced = debounce(mockFn, 1000); debounced(); expect(mockFn).toHaveBeenCalled(); }); Le test ne contrôle pas le temps. Contraintes Utiliser des fake timers pour rendre le test déterministe. Livrable attendu Un test corrigé maîtrisant l’horloge et validant correctement le comportement.
Compétences ciblées
fake timersasync testingjestbugfixtiming