Cómo asignar valores por defecto a los argumentos de una función (revisión ES6)

Introducción

Hace ya tiempo le dediqué una entrada en el blog a cómo asignar valores por defecto a los argumentos de una función en Javascript. Es cierto que hasta ahora, cualquiera de los métodos que habíamos usado para conseguir esta funcionalidad básica resultaban poco elegantes y de difícil legibilidad, algo que ha cambiado gracias a la propuesta del ECMAScript 6 y su implementación nativa.

Echemos un vistazo a cómo trabajar desde ya con los nuevos métodos.
Seguir Leyendo…

Dentro de Javascript | Etiquetas: , , , , , | Deja un comentario.

Curso de Testing Javascript Moderno. Parte 7: más DOM con Fixtures y JSDom

Introducción

En los capítulos anteriores de nuestra serie sobre testing moderno, vimos cómo se pueden realizar tests independientes tanto sobre modelos (recurriendo para la mayoría de los casos a stubs, spies o mocks) y sobre las vistas (comprobando el marcado con jQuery y la coherencia en la lógica de Backbone). También hemos aclarado que, aunque estemos hablando de una arquitectura tipo MVVM, estos tests son ‘exportables’ a proyectos de tipo estándar sin ningún tipo de arquitectura compleja detrás.

Retomamos ahora por un momento la idea de que estamos trabajando en un entorno donde contamos con una capa de tipo modelo que queda conectada a otra de tipo vista, permitiendo así que ambas se itercambien datos de forma bidireccional. Ese sería el planteamiento básico de una bibilioteca o framework como Backbone, donde de nuevo los tests deben asegurar que los dos bloques quedan efectivamente interconectados. Toca ahora entonces revisar la interacción de ese marcado de tipo DOM que hemos generado en el capítulo anterior para verificar que se conecta con la vista y que las acciones realizadas sobre uno implican los cambios esperados en el otro.

Fuera de la arquitectura MVVM, lo que queremos comprobar ahora es que un marcado creado para un test, como por ejemplo un botón, al manipularse (pulsarlo), lanzan algún evento o dispara una lógica esperada (una petición AJAX o limpiar un formulario)… Veamos cómo podemos conseguir esto.
Seguir Leyendo…

Dentro de Javascript, TDD | Etiquetas: , , , , , , , | 1 Comentario

Curso de Testing Javascript Moderno. Parte 6: tests unitarios en el DOM

Introducción

Continuamos con nuestra revisión de testing moderno tras haber visto cómo trabajar tanto con código asíncrono como con los métodos privados que podríamos encontrar en nuestra aplicación.

En esta ocasión, retomamos nuestra arquitectura MVVM para analizar cómo organizaríamos nuestras pruebas con el fin de cubrir la mayor parte de código posible. En relación a esto, habría que resaltar que testear cada capa de una arquitectura modelo-vista/vista-modelo resulta trivial: únicamente se trata de ir escribiendo los tests necesarios que comprueban aquellas funcionalidades que necesitamos implementar. No obstante, existen algunas recomendaciones concretas que pueden aplicarse a diversos aspectos de Backbone que es conveniente conocer.

Pero las pruebas que vamos a ver no se limitan únicamente a estas aplicaciones más complejas: resultan fundamentales también para pequeños desarrollos habituales como por ejemplo plugins de jQuery o cualquier funcionalidad de nuestra aplicación que termine pintando algo en pantalla. Básicamente se trata del mismo ‘concepto': coger datos de algún sitio, procesarlos y enviar algo a la pantalla. Los tests unitarios en este escenario nos ayudan a comprobar que realmente estamos generando aquello que esperamos, y que no se rompe nada por el camino.

Veamos cómo conseguir esto:
Seguir Leyendo…

Dentro de Javascript, TDD | Etiquetas: , , , , , , | 2 Comentarios

Curso de Testing Javascript Moderno. Parte 5: tests unitarios en métodos privados

Introducción

Continuamos con nuestra serie de tutoriales sobre Testing Moderno en Javascript para abordar en esta ocasión una cuestión interesante: la cobertura de aquellos métodos o funciones que estructuramos en nuestras aplicaciones para que sean ‘privados’ siguiendo la filosofía de otros lenguajes de programación orientados a objetos.

Por definición, estos trozos de código deberían ser inaccesibles desde fuera del contexto en el que se han declarado, por lo que a priori, los tests que lanzamos no son capaces de analizarlos. Para solventar este problema no existe una fórmula ‘universalmente aceptada’, por lo que tenemos que recurrir a la que mejor se adapte a nuestra forma de programar.

Veamos en detalle el problema y las soluciones propuestas.
Seguir Leyendo…

Dentro de Javascript, TDD | Etiquetas: , , , , , , , , | 5 Comentarios

Curso de Testing Javascript Moderno. Parte 4: testeando código asíncrono (AJAX)

Testeando Javascript Asíncrono: AJAX

Introducción

En el capítulo anterior, repasamos cuál debería ser la estructura básica de una suite de tests, entendiendo por suite el bloque de tests encargado de dar cobertura a un conjunto concreto y relacionado de funcionalidades. Vimos cómo dentro de cada una de estas piezas, que no deja de ser una agrupación abstracta de tests con cierta relación entre ellos, las pruebas se agrupan a su vez en lo que denominamos ‘bloques’. Estos bloques, pueden a su vez anidarse dentro de otros para conseguir una mayor claridad organizativa. Finalmente escribimos algunos ejemplos en los que se mostraba cómo en cada uno, agrupábamos distintos casos de test (esto son las afirmaciones o tests unitarios) que van dando cobertura (y documentación) a las funcionalidades.

En esta nueva entrega analizaremos como atacar el problema del código asíncrono (el que llega a través de una petición AJAX), un importante obstáculo a priori porque se trata de manejar y comprobar algo que aún no tenemos y que, por lo general, depende de un tercero. Para estos casos, recurriremos a los ‘stubs‘ que ya mencionamos en la primera entrega de esta serie y que ahora retomamos para trabajarlos con más profundidad. Vamos allá.
Seguir Leyendo…

Dentro de Javascript, jQuery, TDD | Etiquetas: , , , , , , , | 3 Comentarios
Página 2 de 3212345...102030...Última
Licencia Creative Commons 3.0

®Copyright 2011. Cotenido web bajo licencia Creative Commons 3.0

Códigos bajo licencias MIT y GPL. Ver página de licencias para más información