Voici un exemple: Mon application Web contient des éléments déplaçables. Lorsque vous faites glisser un élément, le navigateur produit une "image fantôme". Je veux supprimer "l'image fantôme" lors du glissement et j'écris un test pour ce comportement.
Mon problème est qu'au départ, je n'ai aucune idée de la façon de corriger ce bogue et la seule façon dont je peux écrire un test est après l'avoir corrigé.
Dans une fonction simple telle que let sum = (a, b) => a - b
, vous pouvez écrire un test expliquant pourquoi sum(1, 2)
n'est pas égal 3
avant d'écrire du code.
Dans le cas que je décris, je ne peux pas tester, car je ne sais pas ce qu'est la vérification (je ne sais pas ce que doit être l'assertion).
Une solution au problème décrit est:
let dataTransfer = e.dataTransfer
let canvas = document.createElement('canvas');
canvas.style.opacity = '0';
canvas.style.position = 'absolute';
canvas.style.top = '-1000px';
dataTransfer.effectAllowed = 'none';
document.body.appendChild(canvas);
dataTransfer.setDragImage(canvas, 0, 0);
Je n'aurais pas pu savoir que c'était la solution. Je n'aurais même pas pu écrire le test après avoir trouvé la solution en ligne, car la seule façon dont je pouvais savoir si cela fonctionnait vraiment était d'ajouter ce code dans ma base de code et de vérifier avec le navigateur s'il avait l'effet souhaité. Le test devait être écrit après le code, ce qui va à l'encontre de TDD.
Quelle serait l'approche TDD de ce problème? L'écriture du test avant le code est-elle obligatoire ou facultative?