Я сделал некоторые TDD с Javascript в прошлом, и то, что я должен был сделать провести различие между тестами Unit и Integration.Selenium проверит ваш общий сайт, с выходом с сервера, его обратной почтой, ajax-звонками, и все это. Но для модульного тестирования ничто из этого не важно.
Что вы хотите - это просто интерфейс, с которым вы будете взаимодействовать, и ваш сценарий. Инструмент, который вы будете использовать для этого, - это в основном JsUnit, который принимает HTML-документ с некоторыми функциями Javascript на странице и выполняет их в контексте страницы. Итак, что вы будете делать, это включает в себя вычеркнуть HTML на странице с вашими функциями. Оттуда вы можете протестировать взаимодействие вашего скрипта с компонентами пользовательского интерфейса в изолированном блоке издевающегося HTML, вашего сценария и ваших тестов.
Это может быть немного запутанным, поэтому давайте посмотрим, можем ли мы сделать небольшой тест. Позволяет некоторому TDD предположить, что после загрузки компонента список элементов окрашен в зависимости от содержимого LI.
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>
Очевидно TDD является многоступенчатым процессом, поэтому для нашего контроля, мы должны несколько примеров.
yourcontrol.js (step1)
function ColorCtrl(id) {
/* Fail! */
}
yourcontrol.js (step2)
function ColorCtrl(id) {
$$("#mockList li").forEach(function(item, index) {
item.setStyle("backgrond-color", item.getText());
});
/* Success! */
}
Вы можете, вероятно, увидеть точку боли здесь, вы должны держать свой макет HTML здесь, на странице, в синхронизации со структурой того, что будет контролировать ваш сервер. Но это дает вам хорошую систему для TDD с JavaScript.