Ejecutar pruebas automatizadas con PHPUnit nos ayuda a tener un código más confiable en nuestros proyectos, ya que nos brinda la posibilidad de saber que el código que estamos agregando o modificando no va a romper la funcionalidad de lo que ya está implementado. Estas pruebas normalmente las ejecutamos de manera manual cada vez que hacemos algún cambio a nuestro código, pero ahora existe una manera de automatizar también ese proceso.

Pruebas automatizadas

Las pruebas automatizadas consisten en el uso de algunas herramientas de software especiales que nos permiten probar el funcionamiento del código que estamos escribiendo, con la finalidad de poder detectar errores y corregirlos a tiempo para poder evitar que lleguen a producción, etc.

Aquí puedes ver una introducción al Desarrollo de clases y métodos con pruebas automatizadas en nuestro Curso de programación orientada a objetos con PHP.

PHPUnit-Watcher

Hace tiempo Facebook dio a conocer Jest, una herramienta para probar código en JavaScript que permite estar probando el código periódicamente por medio de un watcher, el cuál está constantemente revisando si existen cambios en el código para ejecutar las pruebas en cuanto se detecte que algún archivo fue modificado.

Ahora, gracias al equipo de Spatie, podemos hacer prácticamente lo mismo para nuestras pruebas en PHP haciendo uso del paquete spatie/phpunit-watcher.

Instalación del paquete

Esto puede hacerse de manera global por medio del siguiente comando:

composer global require spatie/phpunit-watcher

Agregar la ruta al PATH en Bash y Zsh

Luego de hacer esto debemos agregar el directorio ~/.composer/vendor/bin a la variable de entorno $PATH. Esta parte depende del shell que estemos utilizando. Si no sabes cuál shell estás utilizando puedes teclear en la terminal el comando echo $SHELL, que deberá retornar la ruta del shell (comúnmente bash o zsh) y dependiendo de cual tengamos debemos editar un archivo de configuración diferente.

Si el comando echo $SHELL retorna /bin/bash debes editar el archivo ~/.bashrc y si el valor retornado es /bin/zsh debes editar el archivo ~/.zshrc. En cualquiera de los dos casos debes agregar la siguiente línea al final del archivo:

# Agregar ejecutables de composer al PATH
export PATH=$PATH:~/.composer/vendor/bin

Una vez hecho esto tendremos disponible el comando phpunit-watcher de manera global.

Ejecutar pruebas

Para iniciar el watcher solamente debemos teclear el siguiente comando en la terminal:

phpunit-watcher watch

Por defecto phpunit-watcher estará observando las subcarpetas app, src y tests en el directorio donde se inició este comando, esperando que algún archivo sea modificado, creado o eliminado. En caso de ser necesario, también puedes sobrescribir este comportamiento creando un archivo .phpunit-watcher.yml en el directorio de tu proyecto. El contenido de dicho archivo debe estar como en el siguiente ejemplo:

# Configuración personalizada para phpunit-watcher
watch:
  directories:
    - myApp
    - tests
  fileMask: '*.php'

Con esta configuración estaremos indicando al watcher que queremos que ejecute las pruebas en cuanto se detecten cambios en los directorios testsmyApp.

Por último, este paquete nos permite pasar un parámetro extra para poder aplicar filtros sobre alguna palabra clave que queramos utilizar al momento de ejecutar las pruebas:

phpunit-watcher watch --filter=users

Esto buscará tanto directorios como archivos que contengan la palabra users en su nombre y ejecutará las pruebas que se encuentren en ellas.

Material Relacionado

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.