Validación de Formularios y Testing en Laravel

Clase 12 de 24Curso Básico de Testing con PHP y Laravel

Resumen

¿Cómo evitar errores al enviar formularios sin archivos?

En el desarrollo de aplicaciones web, es común encontrar formularios que requieren la subida de archivos. ¿Qué sucede si un usuario intenta enviar un formulario sin un archivo, pero el servidor espera uno? Esto podría generar errores en la aplicación. Por lo tanto, es crucial implementar validaciones adecuadas para asegurarnos de que los formularios se envíen con los datos necesarios. Aquí te explicamos cómo configurar una validación de archivo requerido, empleando pruebas automatizadas para verificar su efectividad.

¿Cómo configurar la validación?

Para comenzar, configuramos la validación en el archivo de testing correspondiente. Imagina que trabajamos en un archivo llamado profile_test.php. Un error común es presionar "enviar" sin haber seleccionado una imagen. Por lo tanto, necesitamos crear un método que verifique la presencia del archivo.

Aquí te mostramos cómo puedes estructurarlo:

public function test_foto_requerida()
{
    $response = $this->post('/profile', ['foto' => '']);
    
    $response->assertSessionHasErrors(['foto' => 'required']);
}

En este fragmento de código, estamos asegurándonos de que, si el campo foto está vacío, se genere un error de sesión indicando que la foto es obligatoria.

¿Dónde y cómo realizar la validación?

La validación se realiza en el controlador, específicamente utilizando el método validate proporcionado por Laravel. Aquí configuramos el campo foto como requerido:

$request->validate([
    'foto' => 'required'
]);

¿Cómo visualizar los errores en el navegador?

Además de validar del lado del servidor, es esencial que los usuarios vean los errores al instante. Para ello, se puede utilizar una técnica en la vista para recorrer y mostrar los errores:

@if($errors->any())
    <ul>
        @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
@endif

Con este fragmento de código HTML, aseguramos que cualquier error de validación será mostrado al usuario, mejorando la experiencia del usuario al clarificar el motivo del error.

¿Por qué es importante realizar pruebas?

Probar nuestras validaciones es fundamental para asegurar que no afecten la funcionalidad de la aplicación. Mediante la prueba test_foto_requerida, verificamos que la validación funciona correctamente y se despliegue un error cuando la foto no se suministra. Aparte, ejecutar todos los tests garantiza que las nuevas validaciones no rompan funcionalidades anteriores.

La práctica de implementar validaciones junto con sus pruebas no solo mejora la calidad de nuestro código, sino que ofrece robustez y tranquilidad al saber que nuestras aplicaciones están bien preparadas para manejar entradas del usuario de manera segura y efectiva. Recuerda, cada paso cuenta en el camino hacia un desarrollo más profesional. ¡Sigue adelante y sigue aprendiendo!