Вот один пример: мое веб-приложение содержит перетаскиваемые элементы. При перетаскивании элемента браузер создает «призрачное изображение». Я хочу удалить «призрачное изображение» при перетаскивании, и я пишу тест для этого поведения.
Моя проблема в том, что я изначально не представляю, как исправить эту ошибку, и единственный способ написать тест - это исправить его.
В простой функции, такой как let sum = (a, b) => a - b
, вы можете написать тест на то, почему sum(1, 2)
он не равен 3
перед написанием любого кода.
В случае, который я описываю, я не могу проверить, потому что я не знаю, что такое проверка (я не знаю, каким должно быть утверждение).
Решение описанной проблемы:
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);
Я не мог знать, что это было решением. Я не мог даже написать тест после нахождения решения в Интернете, потому что единственный способ узнать, действительно ли оно работает, было добавить этот код в мою кодовую базу и проверить в браузере, имеет ли он желаемый эффект. Тест должен был быть написан после кода, который идет вразрез с TDD.
Каким будет подход TDD к этой проблеме? Написание теста перед кодом обязательно или необязательно?