Ось один приклад: моя веб-програма містить перетягуються елементи. Перетягуючи елемент, браузер створює "привид зображення". Я хочу при перетягуванні видалити "привид зображення", і я пишу тест на таку поведінку.
Моя проблема полягає в тому, що я спочатку не маю уявлення про те, як виправити цю помилку, і єдиний спосіб я можу написати тест - це після того, як я виправив його.
У такій простої функції, як 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 до цієї проблеми? Чи є написання тесту перед кодом обов'язковим чи необов’язковим?