This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

La Agencia de Nueva Generación ya está aquí. Únete a más de 3.000 profesionales de agencias en Agency Advantage 2026. Regístrate gratis→

Utiliza las pruebas unitarias de Laravel para evitar errores que arruinen el proyecto

Actualizado el Agosto 28, 2025

7 min de lectura
guideLaravel unit testing workflow using Pest and PHPUnit to verify application logic

PHPUnit es uno de los paquetes de pruebas unitarias de PHP más conocidos y altamente optimizados. Es la opción preferida de muchos desarrolladores para rectificar diferentes lagunas de desarrollo de la aplicación. Su función principal es realizar pruebas unitarias globales para aplicaciones, por lo que puedes probar tu código en detalle. Sin embargo, también puedes utilizarlo para diferentes funciones, ya que es increíblemente flexible para hacer algo más que pruebas unitarias. Además, es compatible con los principales frameworks PHP, incluido Laravel. Muchos desarrolladores expertos lo recomiendan para todos los procesos de pruebas unitarias de Laravel, debido a sus estándares de pruebas optimizados.

PHPUnit está desarrollado con aserciones sencillas, que te facilitan bastante la comprobación completa de los códigos. Además, ofrece resultados óptimos cuando pruebas componentes de código individualmente, dándote resultados ampliados, de modo que los errores se pueden averiguar fácilmente. Sin embargo, esto significa que probar componentes mucho más avanzados, como controladores, modelos y validaciones de formularios, también puede ser un poco complicado.

Leer más sobre: Pruebas Unitarias PHP Usando el Framework PHPUnit

Pruebas unitarias con Laravel

Laravel es el framework PHP más popular para el desarrollo de aplicaciones. Desde el punto de vista de las pruebas, también es conocido por ser muy adecuado por sus creativas funciones de prueba. En Laravel, hay dos formas de probar tu aplicación. Una es la prueba unitaria y la otra es la prueba de características. Las pruebas unitarias te permiten probar tus clases, modelos, controladores, etc., mientras que las pruebas de características te permiten probar tu código base.

Si miras dentro de tu directorio de instalación de Laravel, podrás ver que hay dos subdirectorios de pruebas disponibles. Estos dos subdirectorios en tu hosting para el proyecto Laravel son de Unit testing y Feature testing. Estos son los lugares donde realizarás las pruebas de tus aplicaciones, ya sean pruebas unitarias o pruebas de características.

En este artículo, demostraré los fundamentos de las pruebas PHPUnit de Laravel. El artículo demostrará el uso tanto de las aserciones de PHPUnit como de los ayudantes de prueba predeterminados de Laravel.

Requisitos previos

Para el propósito de este tutorial de pruebas unitarias de Laravel, asumo que tienes una aplicación Laravel instalada en un servidor web. Mi configuración es

  • Laravel 5.5
  • PHP 7.x

He utilizado Cloudways para alojar Laravel en un servidor gestionado. Cloudways ofrece un gran devstack integrado en su plataforma y me permite trabajar libremente sin distraer mi atención a ningún problema a nivel de servidor. También puedes probar Cloudways gratis registrándote para obtener una cuenta.

Crear un caso de prueba unitaria de Laravel

Al utilizar PHPUnit, el primer paso es crear nuevas clases de prueba. Estas clases de prueba se almacenan en el directorio./tests/ de tu aplicación Laravel. Cada clase de prueba se denomina Test.php dentro de una carpeta. Este formato ayuda a PHPUnit a encontrar fácilmente cada clase de prueba, y además ignora cualquier otra clase que no resida en el archivo Test.php.

En tu aplicación Laravel recién instalada, encontrarás dos archivos en el directorio ./tests/, uno de ExampleTest.php y el otro TestCase.php. El archivo TestCase.php es básicamente un archivo bootstrap que establece el entorno y las características de Laravel en nuestras pruebas. Facilita el uso de las características de Laravel en las pruebas, y también habilita el marco para los ayudantes de las pruebas. ExampleTest.php constituye una clase de prueba de ejemplo que contiene un caso de prueba básico que utiliza los ayudantes de prueba de la aplicación.

Para crear una nueva clase de prueba, puedes crear un nuevo archivo manualmente o ejecutar el comando make:test incorporado en Laravel.

Consigue ahora tu manual de VueJS

Sólo tienes que introducir tu dirección de correo electrónico y recibirás el enlace de descarga en tu bandeja de entrada.

Gracias

Tu Ebook está de camino a tu bandeja de entrada.

Para crear una nueva clase de prueba llamada BasicTest, sólo tienes que ejecutar el siguiente comando artisan:

php artisan make:test BasicTest

Laravel creará una clase de prueba básica con el siguiente aspecto:

<?php

class BasicTest extends TestCase

{

 
/**

* A basic test example.

*

* @return void

*/

  public function testExample()

  {

  $this->assertTrue(true);

  }

}

?>

Es bueno averiguar el archivo phpunit.xml predeterminado de Laravel antes de ejecutar tu conjunto de pruebas. PHPUnit buscará por sí mismo el archivo con el nombre phpunit.xml o phpunit.xml.dist en su directorio de ejecución actual. Dentro de este archivo, puedes configurar operaciones específicas para tus pruebas.

También te puede gustar: Integración continua de PHP con Travis CI

Aunque este archivo contiene mucha información relativa a las pruebas, la sección más importante por ahora es la definición del directorio testsuite:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit ...  >

   <testsuites>

       <testsuite name="Application Test">

           <directory>./tests/</directory>

       </testsuite>

   </testsuites>

  ...

</phpunit>

Escribir una prueba unitaria básica

Una vez completados con éxito los procesos mencionados, ya puedes escribir el caso de prueba unitario básico para tu aplicación Laravel accediendo a tests/Feature/ExampleTest.php. Aquí puedes escribir casos de prueba para probar características fundamentales de la aplicación.

<?php

namespace Tests\Feature;

use Tests\TestCase;

use Illuminate\Foundation\Testing\WithoutMiddleware;

use Illuminate\Foundation\Testing\DatabaseMigrations;

use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase

{

 
/**

  * A basic test example.

  *

  * @return void

  */

  public function testBasicTest()

  {

  $response = $this->get('/');

  $response->assertStatus(200);

  }

}

Puedes utilizar siete de las aserciones básicas de PHPUnit para escribir pruebas para tu clase Basket. Estas aserciones son

  1. assertTrue()
  2. assertFalse()
  3. assertEquals()
  4. assertNull()
  5. assertContains()
  6. assertCount()
  7. assertEmpty()

assertTrue() y assertFalse()

La función principal de assertTrue() y assertFalse() es que te permite afirmar y comprobar si los valores equivalen a verdadero o falso.

Esto lo hace perfecto para probar aquellos métodos que dan como resultado valores booleanos. Como tenemos un método llamado has($item) definido en nuestra clase Basket, que da verdadero o falso para los artículos especificados al comprobar su disponibilidad en la cesta.

<?php
use App\Basket;

class BasicTest extends TestCase
{
public function testHasItemInBasket()
{
$basket = new Basket(['item_one', 'item_two', 'item_three']);

$this->assertTrue($basket->has('item_one'));
$this->assertFalse($basket->has('item_four'));
}
}?>

Si ahora ejecuto el comando ./vendor/bin/phpunit, observarás que la salida incluye:

OK (2 tests, 4 assertions)

assertEquals() y assertNull()

assertEquals() ayuda a comparar el valor real de la variable con el valor esperado. Dentro de ella, hay otra función llamada takeOne(), que comprueba si el valor de un elemento está actualmente en la cesta o no. Este método devuelve un valor nulo siempre que la cesta esté vacía. Además, también podemos utilizar assertNull(), que realiza la misma acción.

A diferencia de assertTrue(), assertFalse() y assertNull(), assertEquals() introduce dos parámetros. Uno es para el valor esperado y el otro para el valor real.

<?php
use App\Basket;

class BasicTest extends TestCase
{
public function testHasItemInBasket()
{
$basket = new Basket(['item_one', 'item_two', 'item_three']);

$this->assertTrue($basket->has('item_one'));

$this->assertFalse($basket->has('item_four'));
}

public function testTakeOneFromBasket()
{
$basket = new Basket(['item_three']);

$this->assertEquals('item_three', $basket->takeOne());

// Null, the basket is now empty
$this->assertNull($basket->takeOne());
}
}

Ejecuta el comando phpunit, y deberías verlo:

OK (3 tests, 6 assertions)

Utilizar assertSee()

Para ver si tu página web muestra los resultados correctos o no, assertSee() es un método estupendo para comprobar su visualización y asegurarte de que su resultado es el que debe ser.

Dado, Cuándo, Entonces en las pruebas

Si quieres probar funciones concretas de tu código, entonces debes seguir el patrón intrínseco de Dado, Cuándo y Entonces.

Dado – Establece la configuración inicial del entorno que quieres probar. Puedes utilizar algunos datos, o incluso puedes configurar una fábrica de modelos en este paso.

Cuándo – Cuándo se refiere a la función/método específico de la prueba y se llama en alguna fase concreta del proceso de prueba.

Luego – En esta parte, declaras sobre el resultado cómo debe ser.

Prueba de la aplicación Laravel

Las pruebas unitarias no son el único proceso de pruebas que necesitarás para tu aplicación. Aunque es necesario en la mayoría de los casos, y debe ser una parte obligatoria de tu proceso de desarrollo, no es necesario que satisfaga todas tus necesidades de pruebas. A veces tu aplicación tiene vistas, navegación y formularios complejos, y también quieres probar estos componentes.

También te puede gustar: Laravel Dusk para pruebas de navegador

Aquí es donde entran en juego los ayudantes de pruebas incorporados de Laravel, que facilitan las pruebas de unos pocos componentes al igual que las pruebas unitarias.

Anteriormente en este ejemplo de pruebas unitarias de Laravel, vimos los archivos predeterminados dentro del directorio /tests/ y dejamos el archivo ./tests/ExampleTest.php para revisarlo más adelante. Así que ábrelo ahora, debería tener este aspecto:

<?php

class ExampleTest extends TestCase

{

 
/**

* A basic functional test example.

*

* @return void

*/

  public function testBasicExample()

  {

  $this->visit('/')

  ->see('Laravel 5.5');

  }

}

Como puedes ver, la prueba en este caso es bastante sencilla y fácil de entender. Sin tener ningún conocimiento adicional o previo sobre el funcionamiento de los ayudantes de prueba de Laravel, puedes entender que da una salida como ésta:

  • cuando visito / (webroot)
  • Debería ver ‘Laravel 5

Cuando abras la aplicación en tu navegador web, verás una pantalla de inicio con «Laravel 5» escrito. Tras superar con éxito la prueba con PHPUnit, podemos afirmar que el resultado de esta prueba de ejemplo es correcto.

Esta prueba garantiza que la página web hecha en la ruta /, da salida con el texto ‘Laravel 5’. Aunque parece una prueba sencilla y no parece muy crítica, siempre que tu aplicación web necesite mostrar información sensible, una prueba como ésta puede evitar que despliegues una aplicación rota.

Deja de perder el tiempo con los servidores

Cloudways se encarga de la gestión del servidor por ti para que puedas centrarte en crear grandes aplicaciones y mantener contentos a tus clientes.

Error de excepción de no coincidencia de token

Laravel 5 viene con un montón de nuevas características impresionantes. El framework ha sido desarrollado con muchas funcionalidades avanzadas, como la activación automática de la protección CSRF en todas las rutas predeterminadas. Esta nueva característica avanzada reduce la vulnerabilidad de tu aplicación a los ataques CSRF. Pero al mismo tiempo, también hace que todas tus pruebas unitarias fallen con una TokenMismatchException.

Leer más sobre: Laravel Protección CSRF

Así que si quieres que tus pruebas unitarias se ejecuten correctamente y no quieres modificarlas para incluir un token CSRF válido. Entonces sólo tienes que desactivar el proceso de validación de tokens al ejecutar las pruebas unitarias. Sólo tienes que añadir el siguiente código al middleware de verificación de tokens de tu aplicación para desactivar la validación de tokens.

/**

* Override to disable validation while testing.

*

* @param \Illuminate\Http\Request $request

* @return bool

*/

protected function tokensMatch($request)

{

  // Don't validate CSRF when testing.

  if(env('APP_ENV') === 'laraveltesting') {

  return true;

  }

  return parent::tokensMatch($request);

}

Palabras finales

En este blog, he explicado brevemente las pruebas unitarias de Laravel utilizando PHPUnit, que es esencial cuando quieres alojar un proyecto Laravel. El paquete es conocido por sus casos de prueba optimizados, que garantizan que todos y cada uno de los componentes de la aplicación pasen por el proceso de prueba estándar para que la aplicación no se rompa durante el despliegue. Este artículo también cubre el uso de los ayudantes de prueba incorporados de Laravel, que destacan su importancia junto con PHPUnit, ya que estos ayudantes de prueba incorporados proporcionan comodidad para probar componentes críticos de la aplicación.

Si todavía tienes alguna pregunta sobre las pruebas unitarias en Laravel, o quieres aportar tus ideas sobre este blog, puedes escribir tus comentarios en la sección de comentarios de abajo.

Share your opinion in the comment section. COMMENT NOW

Share This Article

Mansoor Ahmed Khan

Llevo en el marketing de contenidos desde 2014, y todavía me entusiasma crear historias que resuenen con el público objetivo y generen resultados. En Cloudways by DigitalOcean (una empresa líder en alojamiento en la nube), dirijo un equipo de creadores de contenidos de ensueño. Juntos, aportamos ideas, escribimos y producimos contenidos increíbles en todos los canales: blogs, redes sociales, correos electrónicos, ¡lo que quieras! Puedes ponerte en contacto conmigo en [email protected].

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

¿Quieres experimentar la plataforma Cloudways en todo su esplendor?

Realice una visita guiada GRATUITA de Cloudways y compruebe usted mismo lo fácil que es administrar su servidor y sus aplicaciones en la plataforma de alojamiento en la nube líder.

Iniciar mi recorrido