Hier ist ein Beispiel: Meine Webanwendung enthält ziehbare Elemente. Beim Ziehen eines Elements erzeugt der Browser ein "Geisterbild". Ich möchte das "Geisterbild" beim Ziehen entfernen und schreibe einen Test für dieses Verhalten.
Mein Problem ist, dass ich zunächst keine Ahnung habe, wie ich diesen Fehler beheben kann. Ich kann einen Test nur schreiben, nachdem ich ihn behoben habe.
In einer einfachen Funktion wie let sum = (a, b) => a - b
können Sie einen Test schreiben, warum sum(1, 2)
nicht gleich ist, 3
bevor Sie Code schreiben.
In dem Fall, den ich beschreibe, kann ich nicht testen, da ich nicht weiß, was die Überprüfung ist (ich weiß nicht, wie die Behauptung lauten soll).
Eine Lösung für das beschriebene Problem ist:
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);
Ich hätte nicht wissen können, dass dies die Lösung war. Ich hätte den Test nicht einmal schreiben können, nachdem ich die Lösung online gefunden hatte, denn ich hätte nur dann wissen können, ob er wirklich funktioniert, wenn ich diesen Code in meine Codebasis aufgenommen und mit dem Browser überprüft hätte, ob er den gewünschten Effekt hat. Der Test musste nach dem Code geschrieben werden, der gegen TDD geht.
Was wäre der TDD-Ansatz für dieses Problem? Ist das Schreiben des Tests vor dem Code obligatorisch oder optional?