🧪 Testing básico en Laravel

🧪 Testing básico en Laravel

Laravel incluye una potente herramienta de testing automatizado que permite verificar el correcto funcionamiento de tu aplicación, garantizando estabilidad, seguridad y calidad del código. Las pruebas pueden ser de unidad, integración o funcionales.

🔍 ¿Por qué hacer testing?

- Detecta errores antes de subir a producción. - Asegura que nuevas funciones no rompan las existentes. - Permite mantener código limpio y confiable.

⚙️ Configuración inicial

Laravel usa PHPUnit para ejecutar las pruebas. Ya viene preinstalado en cada proyecto, con un archivo de configuración phpunit.xml.


# Ejecutar todos los tests
php artisan test

# O directamente con PHPUnit
vendor/bin/phpunit

🧩 Estructura de carpetas de pruebas

Los archivos de test se encuentran en /tests:

  • Feature/ — pruebas que interactúan con rutas, controladores y vistas.
  • Unit/ — pruebas de funciones o clases individuales.

🧪 Crear una nueva prueba


php artisan make:test UsuarioTest

Esto creará un archivo en tests/Feature/UsuarioTest.php con una estructura inicial lista para editar.

📘 Ejemplo de test básico


namespace Tests\Feature;

use Tests\TestCase;

class UsuarioTest extends TestCase
{
    public function test_pagina_principal_carga_correctamente()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
        $response->assertSee('Laravel');
    }
}

Este test verifica que la página principal responde correctamente y contiene el texto “Laravel”.

🧠 Asserts más comunes

  • $response->assertStatus(200) — Verifica código HTTP correcto.
  • $response->assertSee('Texto') — Comprueba que un texto esté presente.
  • $this->assertTrue($valor) — Asegura que la condición sea verdadera.
  • $this->assertDatabaseHas('users', [...]) — Verifica registros en la base de datos.

🧰 Testing con base de datos

Laravel permite ejecutar pruebas en una base de datos de prueba temporal usando el trait:


use Illuminate\Foundation\Testing\RefreshDatabase;

class RegistroUsuarioTest extends TestCase
{
    use RefreshDatabase;

    public function test_creacion_usuario()
    {
        $response = $this->post('/register', [
            'name' => 'Jorge',
            'email' => 'jorge@test.com',
            'password' => '12345678',
        ]);

        $this->assertDatabaseHas('users', ['email' => 'jorge@test.com']);
    }
}

🚀 Testing de API

También puedes probar tus endpoints de API:


$response = $this->getJson('/api/users');
$response->assertStatus(200)
         ->assertJsonStructure(['data']);
  

📄 Resumen

  • Usa php artisan test para ejecutar todos los tests.
  • Guarda los tests en tests/Feature o tests/Unit.
  • Usa traits como RefreshDatabase para limpiar la base de datos.
  • Los tests garantizan la estabilidad del código en el tiempo.

Publicar un comentario

0 Comentarios