J'ai fait quelques TDD avec Javascript dans le passé, et ce que j'avais à faire était de faire la distinction entre les tests Unitaires et d'Intégration. Le sélénium permettra de tester votre site en général, avec la sortie du serveur, son post sur le dos, les appels ajax, tout ça. Mais pour les tests unitaires, rien de tout cela est important.
Ce que vous voulez, c'est juste l'INTERFACE utilisateur que vous allez être en interaction avec, et votre script. L'outil que vous allez utiliser pour ce est fondamentalement JsUnit, qui prend un document HTML, avec quelques fonctions Javascript sur la page et les exécute dans le contexte de la page. Donc, ce que vous allez faire, y compris l'Écrasé HTML de la page avec vos fonctions. À partir de là,vous pouvez tester l'interaction de votre script avec les composants de l'INTERFACE utilisateur dans l'unité isolée de la moqué de HTML, votre script, et vos tests.
Peut-être un peu confus, alors permet de voir si on peut faire un petit test. Permet à certains TDD de supposer qu'après un composant est chargé, d'une liste d'éléments est de couleur en fonction du contenu de la 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>
Évidemment TDD est un processus multi-étape, donc, pour notre contrôle, nous allons avoir besoin de plusieurs exemples.
yourcontrol.js (1)
function ColorCtrl( id ) {
/* Fail! */
}
yourcontrol.js (etape 2)
function ColorCtrl( id ) {
$$("#mockList li").forEach(function(item, index) {
item.setStyle("backgrond-color", item.getText());
});
/* Success! */
}
Vous pouvez probablement voir la douleur au point d'ici, vous devez garder votre maquette HTML ici sur la page en synchronisation avec la structure de ce que votre serveur contrôles seront. Mais il ne vous obtenir un très bon système pour le TDD communique avec JavaScript.