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.
<?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:
# Ciclo di sviluppo: solo i test toccati, in parallelo./vendor/bin/pest --dirty --parallelLa fiducia nel deploy non viene dal numero di test, ma da quanto spesso li lanci. E li lanci solo se sono veloci.