Skip to content

5. Datos de prueba

Temas del programa: 3.3

De dónde salen y dónde viven

DesarrolloPruebasProducción
Basereservaficreservafic_testingLa del servidor
Quién la llenaSeederCada prueba con factoriesLos usuarios
Se borraCuando quierasAntes de cada pruebaNunca
Datos realesNoNoSí
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="pgsql"/>
<env name="DB_DATABASE" value="reservafic_testing"/>
Mismo motor

PostgreSQL como en producción · STD-TEST §6

Otra base

RefreshDatabase la vacía · si apunta a desarrollo pierdes tus datos

Factories — datos coherentes en una línea

Section titled “Factories — datos coherentes en una línea”
database/factories/EquipoFactory.php
public function definition(): array
{
return [
'nombre' => fake()->randomElement(['Laptop', 'Proyector', 'Cámara']).' '.fake()->numerify('###'),
'descripcion' => fake()->sentence(),
'disponible' => true,
];
}
$equipo = Equipo::factory()->create(); // uno con valores al azar válidos
$equipos = Equipo::factory()->count(5)->create(); // cinco
$equipo = Equipo::factory()->create();
Prestamo::factory()->for($equipo)->create([
'fecha_inicio' => '2026-11-10 10:00:00', // lo que la prueba necesita controlar
'fecha_fin' => '2026-11-10 12:00:00',
]);

La factory llena el resto · quien lee la prueba ve de inmediato qué datos son relevantes

STD-TEST §5 · factories y no datos repetidos escritos a mano en cada prueba

class PrestamoApiTest extends TestCase
{
use RefreshDatabase; // migra una vez y revierte lo de cada prueba
Sin RefreshDatabase

Una prueba ve los préstamos que dejó otra y pasa o falla según el orden

Con RefreshDatabase

Cada prueba crea lo que necesita y nada más

STD-TEST-03 y STD-TEST-04

Seeder

Datos de demostración para trabajar en desarrollo · admin@reservafic.test

Factory en la prueba

Los datos exactos que esa prueba necesita

No uses el seeder de demo como datos de prueba · si alguien cambia la demo se rompen pruebas que no tienen relación

  • Nunca copies datos de personas reales a la base de pruebas
  • Usa fake() para nombres y correos y dominios .test
  • La contraseña de la UserFactory es conocida · solo para desarrollo y pruebas
  • Los datos de prueba tampoco van al repositorio si salen de una base real
SeveridadBloquea
BLOCKER — viola una regla P0Sí
MAJOR — viola una regla P1Sí hasta corregir
MINOR — mejora razonableNo
NIT — preferenciaNo

BLOCKER — STD-API-05 el endpoint no está dentro de auth:sanctum y cualquiera puede leer préstamos

Actividad A5 — un merge request lleno de defectos

Continúa con 6. Desarrollo seguro.