geçmişte JavaScript bazı TDD yapılır ve yapmam gereken buydu ettik Birim ve Entegrasyon testleri arasındaki ayrımı yapmak.Selenium, sunucunuzun çıktısı, geri gönderimleri, ajax çağrıları, tüm bunları içeren genel sitenizi test edecektir. Ama birim testi için bunların hiçbiri önemli değil.
İstediğiniz, etkileşim kurduğunuz kullanıcı arabirimi ve komut dosyanızdır. Bunun için kullanacağınız araç temel olarak JsUnit, HTML belgesini alır, sayfadaki bazı Javascript işlevleri ile bunları sayfa bağlamında yürütür. Yani, yapacağınız şey sayfadaki Stubbed out HTML'yi fonksiyonlarınızla birlikte içeriyor. Buradan, senaryonun etkileşimini, sahte HTML'nin, ünitenizin ve testlerin yalıtılmış ünitesindeki UI bileşenleri ile test edebilirsiniz.
Bu biraz kafa karıştırıcı olabilir, bu yüzden biraz test yapıp yapamayacağımızı görelim. Bir bileşen yüklendikten sonra, bir öğe listesinin LI'nin içeriğine bağlı olarak renklendiğini varsaymak için bazı TDD'ye izin verir. Bizim kontrolü için, birden fazla örnek gerekir böylece
tests.html
<html>
<head>
<script src="jsunit.js"></script>
<script src="mootools.js"></script>
<script src="yourcontrol.js"></script>
</head>
<body>
<ul id="mockList">
<li>red</li>
<li>green</li>
</ul>
</body>
<script>
function testListColor() {
assertNotEqual($$("#mockList li")[0].getStyle("background-color", "red"));
var colorInst = new ColorCtrl("mockList");
assertEqual($$("#mockList li")[0].getStyle("background-color", "red"));
}
</script>
</html>
Açıkçası TDD, çok adımlı bir süreçtir.
yourcontrol.js (step1)
function ColorCtrl(id) {
/* Fail! */
}
yourcontrol.js Muhtemelen size sahte HTML tutmak zorunda ağrı noktası burada görebilirsiniz
function ColorCtrl(id) {
$$("#mockList li").forEach(function(item, index) {
item.setStyle("backgrond-color", item.getText());
});
/* Success! */
}
(adım2) Burada, sunucu kontrolünüzün yapısının yapısıyla uyumlu bir sayfada. Ama size TDD'ing için JavaScript ile güzel bir sistem sunuyor.