Componentes para Laravel

En esta lección vamos a comenzar la creación de un nuevo componente para PHP / Laravel utilizando Composer y PHPUnit.

Repositorio

Ver el código de esta lección en GitHub

Creación de una librería con Composer

Creemos un directorio con mkdir styde-form y vamos a dirigirnos a éste con cd styde-form.

A continuación ejecutemos composer init. Recibiremos el siguiente mensaje:

This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>)

Debemos completar lo siguiente:

  1. Nombre: yo llamaré a mi componente «styde/form», puedes colocarle [TU NOMBRE]/form o el nombre que prefieras.
  2. Descripción: debemos colocar cualquier descripción corta, por ejemplo: «Advanced form generation for Laravel» y presionar ENTER
  3. Autor: coloca tu nombre y tu correo y presiona ENTER
  4. Stability: esta es la estabilidad que vamos a aceptar de componentes de terceros, coloquemos «stable». ENTER.
  5. Package Type: se refiere al tipo de paquete. Cuando creamos un nuevo «proyecto» nuestro paquete es de tipo «project». Para crear una nueva «librería» utilizaremos «library». ENTER.
  6. License: utilicemos MIT, al igual que Laravel.
  7. Dependencies: vamos a indicar qué queremos instalar las dependencias de forma recursiva presionando ENTER.
    • La primera dependencia que necesitamos es -sorpresa- php. Requeriremos la versión 7.2.5 o superior con ^7.2.5. Esta es la misma versión requerida por Laravel 7.
    • Luego laravel/framework (ENTER) y necesitamos la versión 7 o superior. Voy a especificar la versión "7.*" que es la más reciente al momento de grabar este video. Presionemos ENTER dos veces.
  8. Dev dependencies: a continuación nos va a pedir las dependencias de desarrollo:
    • Instalaremos phpunit/phpunit especificando la versión ^8.5.
    • Luego instalaremos orchestra/testbench en la versión que sea compatible con la versión de Laravel que estemos utilizando. Por ejemplo 5.* es compatible con Laravel 7.*. Puedes ver la tabla comparativa en la página de orchestra/testbench en GitHub.
  9. Para finalizar confirmemos la generación del archivo composer.json con ENTER. Si has cometido algún error indica que no quieres confirmar y comienza de nuevo.
  10. Install dependencies now: presiona ENTER nuevamente para instalar todas las dependencias indicadas previamente.

Configuración de autoload con Composer

A continuación vamos a configurar la «autocarga» en el archivo composer.json, como aprendimos en la lección Autocarga de clases con Composer y PSR-4:

Coloca estas líneas debajo de "require-dev": { },

También utilizaremos psr-4 para las pruebas, en el entorno de desarrollo:

Para finalizar ejecuta composer dump-autoload en el directorio de la librería.

Configuración de PHPUnit

Vamos a crear el directorio tests/ dentro de la raíz de nuestra librería.

Dentro del directorio tests/ vamos a crear la clase TestCase que va a extender de \PHPUnit\Framework\TestCase:

Además vamos a copiar el siguiente contenido al archivo phpunit.xml:

Escribiendo nuestra primera prueba unitaria

Para probar que todo lo anterior funcione, vamos a crear una prueba unitaria de prueba. Crea la clase TestUnitTest con lo siguiente:

En la consola ejecuta vendor/bin/phpunit/:

Prueba fallando

La prueba falla porque hemos escrito $this->assertTrue(false).

assertTrue comprueba que el argumento pasado sea verdadero. Cambia el código por $this->assertTrue(true) y ejecuta la prueba nuevamente.

¡Si la prueba pasa estás listo para avanzar a la siguiente lección!

 

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

Lección siguiente Realizando nuestra primera prueba con PHPUnit