मैंने अतीत में जावास्क्रिप्ट के साथ कुछ टीडीडी किया है, और मुझे जो करना है वह यूनिट और एकीकरण परीक्षणों के बीच अंतर बना रहा था। सेलेनियम सर्वर से आउटपुट के साथ आपकी समग्र साइट का परीक्षण करेगा, इसकी पोस्ट बैक, AJAX कॉल, वह सब। लेकिन यूनिट परीक्षण के लिए, इनमें से कोई भी महत्वपूर्ण नहीं है।
आप जो चाहते हैं वह सिर्फ यूआई है जिसके साथ आप बातचीत कर रहे हैं, और आपकी स्क्रिप्ट। इसके लिए आप जिस टूल का उपयोग करेंगे, वह मूल रूप से JsUnit है, जो कुछ जावास्क्रिप्ट कार्यों के साथ एक HTML दस्तावेज़ लेता है पृष्ठ पर और पृष्ठ के संदर्भ में उन्हें निष्पादित करता है। तो आप अपने कार्यों के साथ पेज पर स्टब किए गए एचटीएमएल सहित क्या कर रहे हैं। वहां से, आप मॉक किए गए एचटीएमएल, आपकी स्क्रिप्ट और आपके परीक्षणों की पृथक इकाई में यूआई घटकों के साथ अपनी स्क्रिप्ट की बातचीत का परीक्षण कर सकते हैं।
यह थोड़ा उलझन में हो सकता है तो देखते हैं कि हम थोड़ा परीक्षण कर सकते हैं या नहीं। कुछ टीडीडी को यह मानने के लिए कि एक घटक लोड होने के बाद, एलआई की सामग्री के आधार पर तत्वों की एक सूची रंगीन होती है।
tests.html
<html>
<head>
<script src="jsunit.js"></script>
<script src="mootools.js"></script>
<script src="yourcontrol.js"></script>
</head>
<body>
</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>
स्पष्ट रूप से टीडीडी एक बहु-चरण प्रक्रिया है, इसलिए हमारे नियंत्रण के लिए, हमें कई उदाहरणों की आवश्यकता होगी।
yourcontrol.js (चरण 1)
function ColorCtrl( id ) {
/* Fail! */
}
yourcontrol.js (step2)
function ColorCtrl( id ) {
$$("#mockList li").forEach(function(item, index) {
item.setStyle("backgrond-color", item.getText());
});
/* Success! */
}
आप शायद यहां दर्द बिंदु देख सकते हैं, आपको अपने सर्वर नियंत्रणों की संरचना के साथ सिंक में पृष्ठ पर अपने नकली HTML को रखना होगा। लेकिन यह आपको जावास्क्रिप्ट के साथ टीडीडीइंग के लिए एक अच्छी प्रणाली मिलती है।