¿Cómo trabajar con el método Index en tu aplicación?
El método Index en las aplicaciones web es crucial para la visualización de listas de registros. Este método es sumamente eficiente para asegurarse de que los datos se presenten de forma organizada y como se espera. A través del enfoque que vamos a discutir, podrás crear y verificar registros fácilmente.
¿Cómo crear múltiples registros para pruebas?
Para empezar a trabajar con el método Index, debemos centrarnos en la creación de varios registros que nos permitan validar nuestros métodos. Sigamos el proceso para crear cinco "posts":
posts ::Class,5
Este fragmento de código nos ayuda a generar los datos de prueba. Recuerda que tener datos de prueba es esencial para asegurarse de que todo funcione como debería.
¿Cómo verificar los datos generados?
Verificar que los datos generados sean correctos es el siguiente paso. En nuestro caso, queremos confirmar que la estructura de los datos en formato JSON sea la esperada:
# Verificación de la estructura JSON[{id:...,titulo:...,fecha_creacion:...,fecha_actualizacion:...},# más registros ]
El objetivo aquí es chequear que cada registro tenga un "id", "título", "fecha de creación" y "fecha de actualización". Estos son los elementos básicos de una estructura JSON correcta para nuestros propósitos.
¿Cuál es la importancia del estatus HTTP?
El estatus HTTP es importante para verificar que la conexión y respuesta de los métodos se ejecute correctamente. El estándar de un código HTTP exitoso para una petición GET es 200:
status:200
Debe asegurarse de que la respuesta de la ruta principal contenga este estatus. De esta manera, se confirma que la comunicación entre el cliente y el servidor fue exitosa.
¿Cómo establecer el proceso de prueba?
El proceso de prueba en desarrollo de software se conoce comúnmente como "Test-Driven Development" (TDD) en inglés. El siguiente es el orden ideal para asegurar que tus pruebas validen correctamente tu método:
Crear datos de prueba: Inicialmente fabricamos varios posts para poner a prueba nuestras hipótesis.
Prueba y validación: Accede al método Index y confirma que los datos recibidos son correctos.
Ajustar el código: Si la prueba inicial falla (lo cual es esperado), el código debe ajustarse hasta que pase.
Mejorar y optimizar: Una vez que la prueba pase, optimiza el código (Refactoring) sin cambiar la funcionalidad.
Este ciclo debe seguirse regularmente para asegurar un desarrollo sólido y confiable.
Propuesta de práctica y mejora continua
A medida que trabajes con el método Index y las pruebas necesarias, no olvides practicar dado que la constancia mejora la comprensión y habilidades de programación. Usa las herramientas de prueba automatizadas disponibles y comparte tus resultados en la comunidad para recibir retroalimentación. ¡Continúa perfeccionando y mejorando tus proyectos!
conclusion, no usare TDD nunca para no tardar 4000000000 años en terminar un proyecto y que mi cliente no se enoje y me trate mal cuando le diga que me tardo mucho
xd
Jajaja
Interesante, aunque igual sería interesante ver cómo se escribiría el test para una estructura de varios niveles con objetos distintos en cada posición del JSON
Tuve que utilizar este código para que no me enviara error.
publicfunctionindex(){returnPost::paginate();}
Verifica que tienes el constructor en la clase:
classPostControllerextendsController{//Creamos nuestro metodo constructor para reasignar a nuestra entidad Postprotected $posts;publicfunction__construct(Post $post){ $this->post = $post;}...
Para muchos como yo no es facil cambiar la forma en la que programas. Sacarte las costumbres, seguir aprendiendo entender que si hay cosas nuevas probablemente traen mejoras (nada lo garantiza) es parte del crecimiento como programador.
Hasta ahora todo ha estado genial y quizás lo mas difícil es aprenderse los métodos que se utilizan para probar cada cosa
Siempre se puede consultar la documentación amigo una ves que se aprende a leer la documentación se vuelve fácil el proceso.
Remember to write descriptive names and to name our test classes after the class being tested.
.
That way, in our tests, we should be reading someting like this:
.
PHPUnit9.5.26 by SebastianBergmann and contributors.PostController(Tests\Feature\Http\Controllers\Api\PostController) ✔ Post store
✔ Post validate title on store
✔ Post show
✔ Post returns 404 when try to show non existing post
✔ Post update
✔ Postdelete ✔ Post index
Time:00:04.747,Memory:32.00MBOK(7 tests,49 assertions)
/**
* Feature for list all resources test
*
*/publicfunctiontest_index(){factory(Post::class,5)->create(); $response = $this->json('GET','/api/posts'); $response->assertJsonStructure(['data'=>['*'=>['id','title','created_at','updated_at']]])->assertStatus(200);//OK}
Route Controller
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/publicfunctionindex(){returnresponse()->json( $this->post->paginate(),200);}
Qué es lo que hacía el método paginate?
Pagina los resultados. Ej: En vez de enviarte 100 posts de golpe, los envía de 15 en 15
Documentacion de la paginación en Laravel docs
Genial la paginación que se hace de forma automática por parte de Laravel, simplemente espectacular!!!