he hecho algunas TDD con Javascript en el pasado, y lo que tenía que hacer era hacer la distinción entre las pruebas de Unidad e Integración.Selenium pondrá a prueba su sitio en general, con la salida del servidor, sus publicaciones posteriores, llamadas ajax, todo eso. Pero para las pruebas unitarias, nada de eso es importante.
Lo que desea es solo la interfaz de usuario con la que va a interactuar y su secuencia de comandos. La herramienta que usará para esto es básicamente JsUnit, que toma un documento HTML, con algunas funciones de Javascript en la página y las ejecuta en el contexto de la página. Entonces, lo que harás será incluir el código HTML aplastado en la página con tus funciones. A partir de ahí, puede probar la interacción de su secuencia de comandos con los componentes de la interfaz de usuario en la unidad aislada del HTML burlado, su secuencia de comandos y sus pruebas.
Eso puede ser un poco confuso, así que veamos si podemos hacer una pequeña prueba. Permite a algunos TDD suponer que después de cargar un componente, se colorea una lista de elementos en función del contenido del 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>
Obviamente TDD es un proceso de múltiples pasos, por lo que para nuestro control, necesitaremos varios ejemplos.
yourcontrol.js (paso 1)
function ColorCtrl(id) {
/* Fail! */
}
yourcontrol.js (paso 2)
function ColorCtrl(id) {
$$("#mockList li").forEach(function(item, index) {
item.setStyle("backgrond-color", item.getText());
});
/* Success! */
}
probablemente puede ver el punto de dolor aquí, usted tiene que mantener su maqueta HTML aquí en la página en sincronización con la estructura de lo que controlará tu servidor. Pero te ofrece un buen sistema para TDD con JavaScript.