Novedades de Laravel 5.5

Laravel desde la versión 5.1 viene con un componente de pruebas basado en PHPUnit que nos permite desarrollar aplicaciones de una manera más profesional y rápida.  Para pruebas que involucren la base de datos ahora Laravel 5.5 nos trae un nuevo trait llamado RefreshDatabase. En esta lección conocerás cuáles son las diferencias con los traits ya existentes y su ventaja frente a ellos.  Si aún no trabajas con pruebas en tus aplicaciones de igual forma anímate a ver la lección y quizás te sorprendas de lo sencillo que es crear pruebas para tu aplicación utilizando Laravel.

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.

¿Qué es un Trait?

Un trait es un mecanismo para emular la característica de la programación orientada a objetos de “herencia múltiple”, puesto que lenguajes como PHP solo soportan la herencia simple.  Si quieres aprender más sobre trait puedes ver nuestros tutoriales:

Ahora bien, Laravel hasta la versión 5.4 tiene dos traits para trabajar con la base de datos: DatabaseTransactions y DatabaseMigrations con los cuales se garantiza que la base de datos esté “limpia” cada vez que se ejecute una prueba correctamente. De manera general:

DatabaseMigrations: ejecuta todas las migraciones de la aplicación antes de comenzar cada método de prueba y luego realiza un migrate:rollback al finalizar la prueba. Como desventaja de este trait es que las pruebas se ejecutan más lento debido a que por cada método de cada prueba se ejecutan las migraciones y luego se hace rollback.

DatabaseTransactions: por otro lado ejecuta por cada método de prueba una transacción donde agrupa todos los cambios generados a la base de datos y al finalizar el método se hace rollback a la transacción con la finalidad que la base de datos esté como al principio y se pueda ejecutar la siguiente prueba sin inconvenientes.  Con este trait las pruebas se ejecutan un poco más rápido ya que solo se hace rollback de una transacción por cada método de prueba, en vez de ejecutar todas las migraciones nuevamente, pero tenemos la desventaja de que debemos ejecutar las migraciones manualmente cada vez que hacemos un cambio.

Ahora en Laravel 5.5 contamos con RefreshDatabase, un nuevo trait que trae lo mejor de los dos mundos para interactuar con la base de datos, puesto que éste se encargará de ejecutar todas migraciones antes de iniciar las pruebas (como lo hace DatabaseMigrations) pero sólo al principio, y luego, por cada método, trabajará con transacciones a las cuales se le harán rollback al finalizar (la característica principal de DatabaseTransactions) a fin de tener la base de datos limpia para el siguiente método, hasta finalizar el conjunto de pruebas.

Con este trait ya no tendríamos que preocuparnos por migrar la base de datos en las pruebas, ni esperar mucho tiempo para que se ejecuten, simplificando el proceso de trabajo con ella.

Con RefreshDatabase ya no será necesario el uso de los 2 anteriores, pues éste será el trait por defecto.

En Styde.net nos enfocamos en que desarrolles aplicaciones modernas y uno de los pilares principales es el uso de pruebas automatizadas por ello te invitamos a que te unas a nuestra comunidad y aprendas desde cero a desarrollar código de calidad y soportado por pruebas con nuestros cursos:

Material relacionado

Únete a la discusión

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

Lección anterior Nuevo comando make:factory en Laravel 5.5 Lección siguiente Nueva forma de validar peticiones y obtener datos en Laravel 5.5