Automatización de Pruebas en Laravel con phpArtisan Test
Clase 21 de 30 • Curso de Estándares y Buenas Prácticas para API REST con Laravel
Resumen
¿Cómo automatizar el proceso de testing en Laravel?
Cuando desarrollas código, uno de los aspectos más importantes es la capacidad para automatizar pruebas y garantizar que todas las funcionalidades sean correctas. La automatización no solo agiliza el proceso de desarrollo, sino que también sirve como documentación del sistema. En esta guía, exploraremos cómo automatizar pruebas en Laravel usando Visual Studio Code y una estructura sólida para mantener tus pruebas organizadas y efectivas.
¿Cómo iniciar el proceso de testing en Laravel?
El primer paso en el proceso de testing es comprender el flujo de trabajo habitual: desarrollamos un código, lo revisamos y verificamos los resultados. Laravel proporciona herramientas poderosas para automatizar estos pasos. Al iniciar el proceso en Visual Studio Code, podemos abrir el terminal y ejecutar phpArtisan test
. Este comando nos ofrece una base inicial para nuestros tests.
php artisan test
Este comando ejecuta cualquier prueba preexistente en tu aplicación, permitiéndonos observar ejemplos y comprender la estructura que Laravel espera.
¿Cómo crear un test personalizado?
Eliminamos ejemplos predeterminados para dar paso a nuestras propias pruebas. Sigamos estos pasos para crear un test:
- Abre la carpeta donde almacenarás tus archivos de test.
- Usa el comando
phpArtisan make:test CategoryTest
para crear un archivo de prueba específico para las funciones de categoría.
php artisan make:test CategoryTest
Este archivo te permitirá probar diferentes métodos del controlador de categorías.
¿Cómo estructurar y ejecutar las pruebas?
Dentro de tu archivo de prueba, puedes comenzar definiendo el entorno que necesitarás para tus pruebas:
- Base de datos de prueba: Agrupa datos que solo existan en memoria durante la ejecución del test.
- Autenticación de usuario: Utiliza un usuario de prueba para simular inicios de sesión y autenticación.
- Definición de rutas: Prueba distintas rutas como el acceso al índice (
index
) y la vista individual (show
) de categorías.
Creación de datos de prueba
Para ello, crea un usuario de prueba y categorías ficticias que simulen las entradas en tu base de datos real. Usarás "factories" para generar estos datos de manera replicable.
public function setUp(): void {
parent::setUp();
$user = User::factory()->create();
$this->actingAs($user);
$categories = Category::factory()->count(2)->create();
}
Prueba de rutas
$response = $this->getJson('/api/categories');
$response->assertJsonCount(2, 'data');
$response->assertJsonStructure([
'data' => [
'*' => ['id', 'type', 'attributes' => ['name']]
]
]);
$response->assertStatus(200);
¿Cómo gestionar diferentes entornos de base de datos?
Para evitar que tu base de datos de desarrollo o producción se vea alterada durante las pruebas, es fundamental configurar una base de datos específica para el entorno de testing. Laravel permite almacenar datos temporalmente en memoria usando SQLite.
- Consulta el archivo de configuración
phpunit.xml
. - Configura usando la tecnología de almacenamiento en memoria con SQLite.
<connections>
<connection>
<driver>sqlite</driver>
<database>:memory:</database>
</connection>
</connections>
Ejecutando y validando tus pruebas
Repite el ciclo de tests hasta tener pruebas exhaustivas para todas las funcionalidades. Usa el comando:
php artisan test
Cada test debería correr sin errores. Si encuentras alguna falla, revisa el código fuente y ajusta hasta que todas las pruebas sean exitosas. Esto garantiza que tus modificaciones futuras no rompan funcionalidades existentes.
Este enfoque no solo asegura la integridad de tu aplicación, sino que hace que el proceso de desarrollo sea más eficiente y confiable. Además, cada test actúa como una sección documentada del comportamiento esperado de tu sistema, facilitando posteriores consultas y modificaciones. Continúa explorando y mejorando tus habilidades en testing para perfeccionar tus proyectos en Laravel.