Given-When-Then (GWT) es un plugin para Pest que introduce pruebas al estilo de comportamiento (Behavior-Driven Testing).
Esta técnica te permite estructurar tus pruebas de una manera más clara y comprensible al dividirlas en tres pasos:
- Given (Dado): Prepara el estado inicial de la aplicación.
- When (Cuando): Actúa sobre el estado.
- Then (Entonces): Verifica el resultado esperado.
Ejemplo de Uso
use AppExceptionsBlockedUserException;
use AppModelsUser;
use function PestGwtscenario;
use function PestLaravelassertDatabaseHas;
scenario('activar usuario')
->given(fn() => User::factory()->create())
->when(fn(User $user) => $user->activate())
->then(fn(User $user) => assertDatabaseHas('users', [
'id' => $user->id,
'activated' => true,
]));
scenario('activar usuario bloqueado')
->given(fn() => User::factory()->blocked()->create())
->when(fn(User $user) => $user->activate())
->throws(BlockedUserException::class);
Más información
Para aprender más sobre este plugin, obtener instrucciones de instalación completas y ver ejemplos adicionales, puedes consultar el repositorio oficial en GitHub.