Oto jeden przykład: Moja aplikacja internetowa zawiera elementy do przeciągania. Podczas przeciągania elementu przeglądarka tworzy „obraz widma”. Chcę usunąć „obraz ducha” podczas przeciągania i piszę test tego zachowania.
Mój problem polega na tym, że początkowo nie mam pojęcia, jak naprawić ten błąd, a jedynym sposobem na napisanie testu jest jego naprawienie.
W prostej funkcji, takiej jak let sum = (a, b) => a - b
, możesz napisać test, dlaczego sum(1, 2)
nie jest równy 3
przed napisaniem jakiegokolwiek kodu.
W opisywanym przypadku nie mogę przetestować, ponieważ nie wiem, co to jest weryfikacja (nie wiem, co to powinno być).
Rozwiązaniem opisanego problemu jest:
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);
Nie mogłem wiedzieć, że to jest rozwiązanie. Nie mogłem nawet napisać testu po znalezieniu rozwiązania online, ponieważ jedynym sposobem, w jaki mogłem wiedzieć, gdyby naprawdę działało, było dodanie tego kodu do mojej bazy kodu i sprawdzenie za pomocą przeglądarki, czy ma on pożądany efekt. Test musiał zostać napisany po kodzie, co jest niezgodne z TDD.
Jakie byłoby podejście TDD do tego problemu? Czy pisanie testu przed kodem jest obowiązkowe czy opcjonalne?