İşte bir örnek: Web uygulamam sürüklenebilir öğeler içeriyor. Bir öğeyi sürüklerken, tarayıcı bir "hayalet görüntü" oluşturur. Sürüklerken "hayalet görüntü" kaldırmak istiyorum ve bu davranış için bir test yazın.
Benim sorunum başlangıçta bu hatayı düzeltmek için hiçbir fikrim yok ve ben bir test yazmanın tek yolu onu düzelttikten sonra olmasıdır.
Gibi basit bir işlevde let sum = (a, b) => a - b
, herhangi bir kod yazmadan önce neden sum(1, 2)
eşit olmadığına dair bir test yazabilirsiniz 3
.
Tarif ettiğim durumda, test edemiyorum, çünkü doğrulamanın ne olduğunu bilmiyorum (iddianın ne olması gerektiğini bilmiyorum).
Açıklanan soruna bir çözüm:
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);
Bunun çözüm olduğunu bilmiyordum. Çevrimiçi çözümü bulduktan sonra testi bile yazamadım, çünkü gerçekten işe yarayıp yaramadığını bildiğim tek yol, kodumun içine bu kodu eklemek ve istenen etkiye sahipse tarayıcı ile doğrulamaktı. Test, TDD'ye aykırı olan koddan sonra yazılmak zorundaydı.
TDD'nin bu soruna yaklaşımı nedir? Testi koddan önce yazmak zorunlu mu yoksa isteğe bağlı mı?