Testing de Carga de Archivos en Laravel
Clase 9 de 24 • Curso Básico de Testing con PHP y Laravel
Resumen
¿Cómo configurar un test para subir archivos en Laravel?
Comprender cómo probar y verificar la carga de archivos en una aplicación web es crucial. Este tutorial te guiará a través del proceso de configuración de un test unitario en Laravel para simular la carga de un archivo, específicamente una imagen. Con este conocimiento, podrás garantizar que tu aplicación maneje correctamente las cargas de archivos antes de implementarla en producción.
¿Cómo crear el test inicial?
El punto de partida es la creación de un archivo de test que validará si la carga de archivos se realiza correctamente. Aquí se utilizan las herramientas ofrecidas por Laravel, lo que permite enfocarse en la lógica de negocio en vez de en configuraciones complejas.
php artisan make:test ProfileTest
Al ejecutar este comando, se generará un archivo de test llamado ProfileTest.php
. El objetivo es verificar si se puede cargar una imagen satisfactoriamente.
¿Cómo simular la carga de una imagen?
Para emular la subida de una imagen, utilizaremos las funcionalidades proporcionadas por Laravel. A continuación, se configuran las clases necesarias:
use Illuminate\Support\Facades\Storage;
Storage::fake('local');
Esta línea indica que vamos a utilizar una configuración falsa de almacenamiento para las pruebas. Así, tus pruebas no afectarán la configuración real de almacenamiento.
¿Cómo enviar una solicitud POST simulada?
Cuando cargamos un archivo al servidor, normalmente utilizamos una solicitud POST. Podremos simular este comportamiento en nuestros tests.
$response = $this->post('/profile', [
'foto' => UploadedFile::fake()->image('foto.jpg')
]);
Aquí, estamos simulando el envío de una imagen denominada foto.jpg
vía una solicitud POST a la ruta /profile
.
¿Cómo verificar la existencia del archivo?
Un aspecto clave es confirmar que el archivo fue realmente almacenado. Para ello, puedes hacer lo siguiente:
Storage::disk('local')->assertExists('profiles/' . $foto);
Este bloque de código revisa si el archivo de imagen existe dentro del directorio profiles
.
¿Cómo manejar las redirecciones en los tests?
Al considerar la experiencia del usuario, querrás que, después de cargar un archivo, el sistema redirija al usuario a una vista específica. También deberás verificar esto en tus pruebas.
$response->assertRedirect('/profile');
Este comando confirma que la aplicación redirige correctamente a /profile
tras completar la carga.
¿Cómo configurar las rutas necesarias?
Para que todo funcione, deberás configurar las rutas en el archivo web.php
de Laravel:
Route::get('/profile', function () {
return view('profile');
});
Route::post('/profile', function (Illuminate\Http\Request $request) {
$request->file('foto')->store('profiles');
return redirect('/profile');
});
Esta configuración incluye una ruta POST
para manejar la carga de imágenes y una redirección a la ruta GET
.
¿Qué sucede al ejecutar el test?
Luego de haber configurado todo lo anterior, es momento de ejecutar el test para asegurarnos de que funciona como se espera.
php artisan test
Este comando ejecutará todas las pruebas y debería confirmar que la carga de archivos se realiza adecuadamente.
Siéntete motivado a seguir experimentando y aprendiendo más sobre las funcionalidades de Laravel. Cada paso que des te acercará más a convertirte en un experto desarrollador. Continúa creando, probando e implementando con confianza.