En la lección anterior donde aprendimos cómo escribir las primeras rutas de nuestra aplicación, utilizamos el navegador para probar dichas rutas y URLs. El problema de estas pruebas en el navegador es que no perduran en el tiempo ni pueden ejecutarse de forma rápida / automática. Así que hoy veremos cómo podemos probar el código que desarrollemos de forma más inteligente, utilizando el componente de pruebas automatizadas que viene incluido con Laravel.

Repositorio

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

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Directorio de pruebas

Laravel incluye en el directorio principal de tu proyecto un directorio llamado /tests. En este directorio vamos a escribir código que se va a encargar de probar el código del resto de la aplicación. Este directorio está separado en dos subdirectorios:

  • El directorio Feature donde escribimos pruebas que emulan peticiones HTTP al servidor.
  • El directorio Unit donde escribimos pruebas que se encargan de probar partes individuales de la aplicación (como clases y métodos).

Escribiendo una prueba

En la siguiente prueba simularemos una petición HTTP GET a la URL del módulo de usuarios. Con asserStatus comprobamos que la URL carga de forma correcta verificando que el status HTTP sea 200. Con el método assertSee comprobamos que podemos ver el texto “Usuarios”:

Para que PHPUnit ejecute el método como una prueba, debes colocar la anotación /** @test */ antes de la declaración del método o colocar el prefijo test_ en el nombre del método como tal:

De lo contrario el método NO será ejecutado como una prueba, lo cual es útil porque nos permite agregar métodos helpers dentro de nuestra clase de pruebas.

Notas

Ejercicio

Crea una ruta, con su prueba correspondiente para editar usuarios (la URL debería tener el formato /usuarios/{ID del usuario aquí}/edit).

Desafío adicional: La ID sólo debería aceptar enteros y deberías escribir una prueba para comprobar que la URL /usuarios/texto/edit no es válida.

Material Relacionado

Lección anterior Rutas con Laravel Lección siguiente Controladores en Laravel