Volver a la página principal
martes 5 noviembre 2024
7

Cómo utilizar Storage en tests con Laravel

Laravel proporciona herramientas para manejar archivos y sistemas de almacenamiento que facilitan el desarrollo y pruebas. El uso de Storage en tests permite simular interacciones con el sistema de archivos sin afectar el almacenamiento real, lo que es ideal para asegurar que nuestras aplicaciones funcionen como se espera en situaciones controladas.

Configuración de Storage en pruebas

En Laravel, podemos usar el método Storage::fake() para simular un sistema de archivos temporal durante los tests. Este método crea un almacenamiento virtual que permite hacer pruebas de manera aislada, sin afectar los archivos reales.

use Illuminate\Support\Facades\Storage;
use Tests\TestCase;

class ExampleTest extends TestCase
{
    public function test_file_is_stored()
    {
        // Crear un almacenamiento falso
        Storage::fake('local');

        // Ejecutar el código que sube el archivo
        $response = $this->post('/upload', [
            'file' => UploadedFile::fake()->image('example.jpg')
        ]);

        // Verificar que el archivo se guardó en el almacenamiento simulado
        Storage::disk('local')->assertExists('example.jpg');
    }
}

En este ejemplo, al llamar a Storage::fake('local'), Laravel crea un sistema de archivos temporal. Luego, el método assertExists verifica si el archivo se guardó correctamente en el almacenamiento falso. Una vez terminado el test, todo el almacenamiento simulado se elimina, sin dejar archivos residuales en el disco.

Ejemplos de pruebas con Storage en Laravel

Verificar que un archivo no existe

Storage::disk('local')->assertMissing('nonexistent.jpg');

Este método se asegura de que un archivo específico no esté en el almacenamiento. Esto es útil para verificar que archivos no deseados no están presentes.

Simular una subida de archivos con UploadedFile

Laravel permite generar archivos falsos para pruebas mediante UploadedFile::fake(). Por ejemplo, para subir imágenes:

$file = UploadedFile::fake()->image('avatar.jpg');
$response = $this->post('/profile', [
    'avatar' => $file,
]);

Este método genera un archivo temporal que se puede manipular y verificar durante los tests.

Verificar el contenido de un archivo

Laravel permite comparar el contenido de los archivos en el almacenamiento simulado:

Storage::disk('local')->put('example.txt', 'Contenido de prueba');
Storage::disk('local')->assertExists('example.txt');
Storage::disk('local')->assertStringEqualsFile('example.txt', 'Contenido de prueba');

Este test comprueba que el archivo contiene el texto exacto que se espera.

Referencia

Para más detalles, puedes consultar la documentación oficial de Laravel.

Etiquetas:
php laravel
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer