TZ~/tizianozonta/blog
← torna al blog
Laravel21 aprile 2026 · 7 min

Testare senza soffrire: la mia suite Pest ideale

Come organizzo test veloci e leggibili che mi danno davvero fiducia nel deploy.

Ho scritto migliaia di test che non leggevo mai. Con Pest ho cambiato approccio: se un test non è leggibile come una frase, è un test sbagliato.

Un test è una frase

La sintassi di Pest mi spinge a descrivere il comportamento, non l’implementazione.

tests/Feature/OrdineTest.php
<?php
it('non permette di pagare un ordine già evaso', function () {
$ordine = Ordine::factory()->evaso()->create();
$risposta = $this->postJson("/ordini/{$ordine->id}/paga");
$risposta->assertStatus(422);
expect($ordine->fresh()->stato)->toBe('evaso');
});

Dataset per i casi limite

Invece di copiare il test cinque volte, uso un dataset. Un caso per riga, leggibile a colpo d’occhio.

it('valida la partita IVA', function (string $piva, bool $valida) {
expect(validaPiva($piva))->toBe($valida);
})->with([
'corretta' => ['IT12345678901', true],
'troppo corta' => ['IT123', false],
'senza prefisso' => ['12345678901', false],
]);

Veloci o non li lanci

Se la suite ci mette più di dieci secondi, smetto di lanciarla ad ogni salvataggio — e quel momento è l’inizio della fine. Tengo i test di unità in memoria e isolo quelli lenti:

Terminal window
# Ciclo di sviluppo: solo i test toccati, in parallelo
./vendor/bin/pest --dirty --parallel

La fiducia nel deploy non viene dal numero di test, ma da quanto spesso li lanci. E li lanci solo se sono veloci.

← torna al blog