Skip to content

Testing y automatización

Hugo Ruscitti edited this page Jul 29, 2016 · 1 revision

En esta guía presentamos las herramientas de testing que utilizamos en el proyecto para detectar errores y validar los desafíos que incluye pilas-bloques.

¿Cómo ejecutar las pruebas?

La forma más sencilla de poner a ejecutar los tests es ejecutar este comando:

ember test

Esto va a iniciar una serie de pruebas usando phantomjs directamente en consola:

Otra opción válida es ejecutar el servidor de desarrollo de ember y luego acceder a la ruta "/test":

ember serve
open http://localhost:4200/tests

En pantalla deberías ver el resultado de los tests mientras se ejecutan:

Por último, la tercer opción es ideal para cuando estamos desarrollando nueva funcionalidad o probando los tests en distintos entornos, ejecutá el siguiente comando:

ember test --server

Esto va a ejecutar los tests de forma contínua, sobre phantomjs y cualquier navegador que visite la URL que aparece en consola:

Pruebas automáticas

En este proyecto también estamos usando un servidor de integración contínua llamado travis.ci, que ejecutará la misma batería de tests de forma automática luego de cada push al servidor de github.

Podés ver el historial de resultados de las pruebas en esta URL:

¿Cómo escribir tests nuevos?

pilas-bloques implementa varios tipos de tests (unidad, integración, aceptación etc...). Y cada uno de estos tests se puede comenzar a implementar luego de ejecutar un comando como:

ember generate acceptance-test nombreDelTest

o simplemente duplicar, renombrar y codificar alguno de los archivos del directorio tests.

Tests de actividades

Los tests sobre las actividades son tests de integración que realizamos sobre el componente pilas-editor y se tienen que implementar en el directorio tests/integration/desafios.

Todos estos tests tienen la misma estructura, tienen que importar dos helpers, definir el nombre del desafío sobre el que se harán las pruebas y luego llamar a la función actividadTests por cada prueba, por ejemplo:

import {moduloActividad, actividadTest} from '../../helpers/actividadTest';

const nombre = 'AlienTocaBoton';

moduloActividad(nombre);

actividadTest(nombre, {
  solucion: '<xml xmlns="http://www.w3.org/1999/xhtml"><block type="al_empezar_a...
});

La función actividadTests contempla los casos más comunes de pruebas: probar una solución correcta, contar actores por etiquetas, producir errores esperados etc...

Podés ver las opciones que admite esta función inspeccionando la documentación del archivo tests/helpers/actividadTest.js