¿Cómo crear un test para verificar datos en la tabla de etiquetas?
En la programación, los tests son cruciales para asegurarnos de que nuestras aplicaciones funcionan correctamente. En esta guía, te mostraremos cómo crear un test para verificar la visualización de datos cuando nuestra tabla de etiquetas contiene registros. Siguiendo una metodología TDD (Desarrollo Guiado por Pruebas), aprenderás a testear de manera efectiva tu aplicación web.
¿Cuál es el primer paso en la creación de tests?
Para comenzar, necesitamos crear un nuevo test que compruebe la visualización de etiquetas cuando existe información en la tabla.
Duplicar un Test Existente: Tomamos el test que verifica que no hay etiquetas y lo duplicamos. Cambiamos el nombre del test para indicar que se trabaja con datos.
Definir Datos de Prueba: Utilizamos Tag::factory para crear un nuevo registro de etiqueta que servirá como nuestro dato de prueba.
publicfunctiontest_muestra_datos_cuando_hay_etiquetas(){$etiqueta=Tag::factory()->create();// Crear etiqueta con factory// Realizar el test}
¿Cómo configurar datos con un Factory y definir una migración?
Los Factorys nos permiten generar datos falsos para pruebas de manera sencilla. Sin embargo, necesitamos asegurarnos de que tanto nuestro factory como nuestras migraciones estén correctamente configuradas para que funcionen juntos.
Configurar el Factory: Asegúrate de que el factory está produciendo datos válidos. Usaremos la biblioteca Faker para generar nombres falsos de etiquetas.
useFaker\Generatoras Faker;$factory->define(Tag::class,function(Faker$faker){return['name'=>$faker->word// Generar un nombre falso];});
Actualizar la Migración: Para que el test funcione, la base de datos debe estar correctamente estructurada.
Schema::create('tags',function(Blueprint$table){$table->string('name');// Definir campo name como string});
¿Cómo verificar la visualización correcta de etiquetas en la vista?
El paso final es asegurarse de que los datos introducidos se vean correctamente en la vista de nuestra aplicación. Este proceso implica programar nuestra lógica para mostrar las etiquetas.
Modificar la Vista Welcome: En el archivo de vista, añadimos la lógica para mostrar las etiquetas si estas existen.
@if($tags->isEmpty())
<p>No hay etiquetas</p>@else
<table><tr><td>{{ $tag->name }}</td><!-- Mostrar el nombre de la etiqueta --></tr></table>@endif
Probar y Verificar: Ejecutamos nuestro test para verificar el correcto funcionamiento ahora que hemos implementado la lógica. Si el test pasa, sabremos que estamos visualizando las etiquetas correctamente.
php artisan test --filter=TestMuestraDatosCuandoHayEtiquetas
Siguiendo estos pasos, podrás asegurar que tu aplicación no solo maneja adecuadamente los casos de ausencia de datos, sino también los escenarios en los que se necesita mostrar información contenida en la base de datos. ¡Sigue aprendiendo sobre TDD y garantiza el éxito de tus desarrollos!
Test de Visualización de Datos en Tabla de Etiquetas
Test de Visualización de Datos en Tabla de Etiquetas
Recursos
Resumen
¿Cómo crear un test para verificar datos en la tabla de etiquetas?
En la programación, los tests son cruciales para asegurarnos de que nuestras aplicaciones funcionan correctamente. En esta guía, te mostraremos cómo crear un test para verificar la visualización de datos cuando nuestra tabla de etiquetas contiene registros. Siguiendo una metodología TDD (Desarrollo Guiado por Pruebas), aprenderás a testear de manera efectiva tu aplicación web.
¿Cuál es el primer paso en la creación de tests?
Para comenzar, necesitamos crear un nuevo test que compruebe la visualización de etiquetas cuando existe información en la tabla.
Duplicar un Test Existente: Tomamos el test que verifica que no hay etiquetas y lo duplicamos. Cambiamos el nombre del test para indicar que se trabaja con datos.
Definir Datos de Prueba: Utilizamos Tag::factory para crear un nuevo registro de etiqueta que servirá como nuestro dato de prueba.
public function test_muestra_datos_cuando_hay_etiquetas()
{
$etiqueta = Tag::factory()->create(); // Crear etiqueta con factory
// Realizar el test
}
¿Cómo configurar datos con un Factory y definir una migración?
Los Factorys nos permiten generar datos falsos para pruebas de manera sencilla. Sin embargo, necesitamos asegurarnos de que tanto nuestro factory como nuestras migraciones estén correctamente configuradas para que funcionen juntos.
Configurar el Factory: Asegúrate de que el factory está produciendo datos válidos. Usaremos la biblioteca Faker para generar nombres falsos de etiquetas.
use Faker\Generator as Faker;
$factory->define(Tag::class, function (Faker $faker) {
return [
'name' => $faker->word // Generar un nombre falso
];
});
Actualizar la Migración: Para que el test funcione, la base de datos debe estar correctamente estructurada.
Schema::create('tags', function (Blueprint $table) {
$table->string('name'); // Definir campo name como string
});
¿Cómo verificar la visualización correcta de etiquetas en la vista?
El paso final es asegurarse de que los datos introducidos se vean correctamente en la vista de nuestra aplicación. Este proceso implica programar nuestra lógica para mostrar las etiquetas.
Modificar la Vista Welcome: En el archivo de vista, añadimos la lógica para mostrar las etiquetas si estas existen.
@if($tags->isEmpty())
<p>No hay etiquetas</p>
@else
<table>
<tr>
<td>{{ $tag->name }}</td> <!-- Mostrar el nombre de la etiqueta -->
</tr>
</table>
@endif
Probar y Verificar: Ejecutamos nuestro test para verificar el correcto funcionamiento ahora que hemos implementado la lógica. Si el test pasa, sabremos que estamos visualizando las etiquetas correctamente.
php artisan test --filter=TestMuestraDatosCuandoHayEtiquetas
Siguiendo estos pasos, podrás asegurar que tu aplicación no solo maneja adecuadamente los casos de ausencia de datos, sino también los escenarios en los que se necesita mostrar información contenida en la base de datos. ¡Sigue aprendiendo sobre TDD y garantiza el éxito de tus desarrollos!
Antes de los otros assert, se puede agregar un assert para revisar que el name del tag no sea vacío. Así no arroja verde cuando debería arrojar por ser nulo:
public function testWithData()
{
$tag = Tag::factory()->create();
$this->assertNotEmpty($tag->name);
$response = $this
->get('/')
->assertStatus(200)
->assertDontSee('No hay etiquetas')
->assertSee($tag->name);
}```
Algo curioso es que, cuando importas el Modelo a los tests y corres el test sí pasa porque, aunque no hay ningún campo creado ni nada, al parecer PHP retorna un dato nulo o vacío o algo así sin ser un error, por tanto, el assertion pasa, o al menos así me pasó a mi jaja
.
Les dejo el código de esta clase:
.
Adicion del test para la visualizacion de etiquetas
Antes de los otros assert, se puede agregar un assert para revisar que el name del tag no sea vacío. Así no arroja verde cuando debería arrojar por ser nulo:
publicfunctiontestWithData(){ $tag =Tag::factory()->create(); $this->assertNotEmpty($tag->name); $response = $this->get('/')->assertStatus(200)->assertDontSee('No hay etiquetas')->assertSee($tag->name);}```
Algo curioso es que, cuando importas el Modelo a los tests y corres el test sí pasa porque, aunque no hay ningún campo creado ni nada, al parecer PHP retorna un dato nulo o vacío o algo así sin ser un error, por tanto, el assertion pasa, o al menos así me pasó a mi jaja
.
Les dejo el código de esta clase:
.
Adicion del test para la visualizacion de etiquetas
Yo estoy usando Laravel v8.5 y me paso igual que a ti. Pero en realidad pasa porque si se esta creando un registro en la base de datos aunque no hayamos configurado el Factory aun.
!Etiquetas
Supongo que es una "nueva función" de las versiones recientes 8.x
jejje es por lo que no existe una validación que diga que el campo sea null, solo con agregar $this->assertNotEmpty($tag->name); se resuelve el error, por que hace la verificación.