En esta y las próximas lecciones del Curso de Patrones de Diseño con PHP vamos a aprender sobre el Patrón Strategy. Para ello, voy a comenzar creando un nuevo proyecto demo utilizando Composer y a escribir un pequeño ejemplo de una clase para Mailer (para el envío de emails) apoyándome en PHPUnit para el desarrollo guiado por pruebas automatizadas (TDD) y en 2 dependencias para el envío de e-mails y para interactuar con la API de Mailtrap. Esta lección y la siguiente me servirán para plantear el escenario que va a requerir el uso del patrón en la tercera lección. Si solo quieres ver cómo se aplica el patrón puedes pasar a la tercera lección: Aplicación del Patrón Strategy.
Instalación y uso de Composer
Para comenzar a utilizar Composer en un proyecto, simplemente debemos ejecutar composer init
dentro de un directorio y luego completar la información del proyecto, por ejemplo su nombre, tipo de proyecto y licencia. Una vez agregadas las dependencias del proyecto ejecutamos composer install
para que sean descargadas al directorio vendor/
.
Instalación y configuración de PHPUnit
Podemos instalar PHPUnit por medio de Composer ejecutando: composer require phpunit/phpunit
Una vez descargado, podemos generar la configuración base con: vendor/bin/phpunit --generate-configuration
y seguir las instrucciones, en el caso del video he dejado las opciones por defecto (el código estará dentro del directorio src/
y las pruebas en el directorio tests/
).
Generado el archivo phpunit.xml
, puedes hacer los cambios que hagan falta simplemente editándolo, por ejemplo puedes agregar colors=“true”
a la etiqueta phpunit
para habilitar los colores en la consola.
Con esto es todo, ya puedes ejecutar tus pruebas con vendor/bin/phpunit
.
Instalación de paquetes adicionales
Si estás trabajando en un proyecto y necesitas de algún componente de PHP puedes buscarlo utilizando Packagist. En nuestro proyecto descargamos dos: stephanecoinon/mailtrap y phpmailer/phpmailer. El objetivo de esta lección no es enseñarte el uso de estos componentes sino construir un sencillo ejemplo y luego aplicar el Patrón Strategy, por ello no me he detenido a explicar mucho cómo funcionan. Puedes ver este video para tips sobre Cómo elegir un componente para tu proyecto de PHP en mi canal de YouTube.
Pasos en los que se divide (usualmente) una prueba automatizada
Generalmente deberíamos procurar que nuestra prueba se divida en 3 pasos:
- Arrange: donde configuramos lo necesario para ejecutar la prueba, por ejemplo métodos de configuración, creación de registros o archivos que necesitaremos inicialmente, etc.
- Act: donde ejecutamos el método o los métodos que queremos probar
- Assert: donde comprobamos que hemos obtenido los resultados esperados utilizando para ello las aserciones que nos provee el framework de prueba, como por ejemplo phpunit.
Luego de escrita la prueba trabajamos en el desarrollo de la funcionalidad, el primer paso es lograr que nuestra prueba pase con éxito, más adelante procederemos a refactorizar y a aplicar el o los patrones de diseño que hagan falta para mejorar la calidad del código.
Material Relacionado
- Cómo enviar emails de prueba con Mailtrap.io en Laravel
- Instalación y configuración de PHPUnit
- Desarrollo de clases y métodos con pruebas automatizadas
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección siguiente Patrón Strategy: Agregando comportamiento adicional de manera condicional