Pruebas y Configuración de Controladores en Laravel

Clase 32 de 37Curso de Introducción a Laravel 6

Resumen

¿Cómo configurar métodos de prueba para endpoints en Laravel?

El proceso de creación y prueba de endpoints en Laravel es clave para asegurarse de que la aplicación responde correctamente a las peticiones. En este caso, trabajamos con la prueba de un endpoint que permite mostrar un post y la verificación de un error 404 para un post inexistente.

¿Cómo se prueba el método show de un controlador en Laravel?

Para verificar que podemos acceder a un post a través de su ID, primero debemos asegurarnos de que estamos correctamente configurados para crear entidades, como un post, y luego confirmamos que los datos se obtienen tal como se espera.

  • Crear un Factory de prueba: Primero necesitamos un Factory para generar un post ficticio.

    $post = Post::factory()->create();
    

    Este método permite crear automáticamente un post de muestra usando el Factory configurado previamente. No necesitamos pasar parámetros porque este dato de prueba solo necesita valores por defecto.

  • Probar la estructura y contenido: Vamos a comprobar que el título del post se obtiene correctamente y que el estatus HTTP devuelto es 200, lo que indica un acceso exitoso.

    $response = $this->getJson(route('posts.show', $post->id));
    $response->assertStatus(200)
             ->assertJson([
                 'title' => $post->title,
             ]);
    

    Aquí, route('posts.show', $post->id) genera la URL necesaria para acceder al post por su ID, y se confirma que la respuesta es correcta.

¿Qué pasa si el post no existe y se intenta acceder?

En situaciones donde se intenta acceder a un recurso que no existe, es fundamental asegurarse de que nuestra aplicación maneja este error y devuelve el estatus correcto.

  • Probar para un post inexistente:

    Podemos probar con un ID de post que no existe, por ejemplo, 1000, para confirmar que se devuelve un error 404.

    $response = $this->getJson('/posts/1000');
    $response->assertStatus(404);
    

    Esto asegura que el framework Laravel automáticamente maneja y devuelve el error 404, ya que si el post no se encuentra, no es necesario añadir lógica adicional para este comportamiento.

¿Por qué es importante estas pruebas en futuras implementaciones?

Implementar correctamente las pruebas para cada funcionalidad no solo ayuda a evitar errores durante el desarrollo, sino que también respalda el código con una capa adicional de confianza. Saber cómo manejar la creación de datos de prueba y verificar errores de acceso es vital para mantener la calidad y robustez de la aplicación.

Te animo a practicar con estos ejemplos en tu propio entorno y a probar tus códigos. Comparte tus resultados y experiencias para seguir aprendiendo y mejorando. ¡Nos vemos en la próxima clase con más conocimientos para reforzar tu habilidad en programación!