Novedades de Laravel 5.5

En esta novena lección del Curso de Novedades de Laravel 5.5 aprenderás las mejoras que trae el framework con respecto al manejo de excepciones en las pruebas, de manera tal que podamos entender y manipular de una mejor forma los errores que  arrojan las pruebas cuando fallan. Esto con el uso de nuevos métodos como withExceptionHandling.  No dejes de ver esta lección donde aprenderás un poco más sobre cómo funciona internamente el manejo de excepciones en Laravel y sobre pruebas automatizadas con PHPUnit.

Suscríbete a nuestro boletín

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

Notas

Por Clemir Rondón.

Los tipos de pruebas que puedes usar en tu aplicación de Laravel los puedes conocer en Cómo escribir pruebas unitarias y de aplicación y por qué es importante.

La lección anterior de la que se habla en el video es Nueva forma de validar peticiones y obtener datos en Laravel 5.5 fue la lección donde se agregó el form request UpdateProfileRequest.

Para ejecutar las pruebas se ejecuta el comando vendor/bin/phpunit pero si quieres especificar que se solo se ejecuten las pruebas de un método o una clase usamos la opción --filter con el nombre de la clase o el método por ejemplo: vendor/bin/phpunit --filter test_twitter_account_validation.

El archivo por defecto donde se registran logs de la aplicación es: storage/logs/laravel.log

Las excepciones producidas en Laravel pueden ser de 2 tipos: las generadas producto de un error en el uso del framework cuando estamos desarrollando o las generadas por el curso normal de la aplicación como por ejemplo la excepción como resultado de una validación de datos fallida (cuando por ejemplo usas el método validate).

Puedes aprender más con nuestro tutorial  Manejo de errores y excepciones en Laravel.

Ahora en Laravel 5.5 disponemos de dos nuevos métodos que nos permiten activar o desactivar el manejo de excepciones en la aplicación dependiendo del tipo de excepción que se está produciendo al ejecutar las pruebas:

Si NO estamos esperando una excepción, es decir, nos aparece un error inesperado al ejecutar la prueba, podemos develar cuál es exactamente el error que está ocurriendo ya sea mirando los logs o directamente en la consola desactivando el manejo de excepciones de Laravel, añadiendo la linea al método:

$this->withoutExceptionHandling();

En cambio, si estamos esperando que la aplicación arroje una excepción como función normal que estamos probando entonces podemos forzar a Laravel para que mantenga activo el manejo de excepciones de Laravel usando en el método de la prueba:

$this->withExceptionHandling();

Ejemplo de estos casos son las excepciones cuando la validación de un formulario falla, las excepciones porque un usuario no está autorizado para realizar una acción, porque un registro de un modelo no fue encontrado cuando hacemos uso del método findOrFail, entre otros.  También puedes Crear y usar excepciones personalizadas con PHP y PHPUnit.

Por defecto, en Laravel el manejo de excepciones está activo y puedes llamar al método withoutExceptionHandling cuando necesites desactivarlo. También puedes usar handleExceptions($exceptions) para especificarle al framework qué excepciones en particular quieres que maneje (y desactivar el manejo de excepciones para el resto de los casos) o handleValidationExceptions para que el framework maneje solo excepciones producidas por validaciones fallidas.

Puedes ver el commit donde se agregó estos nuevos métodos en el repositorio: a171f44 y el pull request para desactivar algunas excepciones #20729.

Material relacionado

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Lección anterior Nueva forma de validar peticiones y obtener datos en Laravel 5.5 Lección siguiente Reglas de validación personalizadas con el nuevo comando make:rule en Laravel 5.5