Cos’è Pest
Pest è un framework di test costruito sopra PHPUnit; nei nuovi progetti Laravel 11 e successivi è adottato per default. Puoi riutilizzare tutte le assertion di PHPUnit scrivendo però test con una sintassi concisa basata su closure. Differenze principali con PHPUnit:I test Pest vengono eseguiti da PHPUnit, quindi coesistono con i test PHPUnit esistenti. Esegui con
php artisan test o vendor/bin/pest.Quando usare describe / it / test
test()
Definizione più semplice. Il nome del test è la sua descrizione.
it()
Sintassi “it should…” in stile inglese, più vicina al linguaggio naturale.
describe()
Raggruppa test correlati. Utile per condividere beforeEach() e organizzare logicamente il file.
Expectation API
expect() è la sintassi di assertion specifica di Pest. Puoi concatenare le condizioni.
Assertion di base
Assertion su modelli
Chain and()
each() per validare ogni elemento di un array
Test parametrici con i dataset
Per testare la stessa logica con più input usadataset() o l’inline with().
Dataset inline
Dataset con nome
Definisci i dataset nella directorytests/Datasets.
Dataset dinamico con closure
Test unitari con Mockery
Mock di un servizio
Spy
Uno spy, a differenza di un mock, chiama l’implementazione reale registrando comunque le chiamate.Mock parziale
Mocka solo alcuni metodi, gli altri usano l’implementazione reale.Test di chiamate API esterne con HTTP fake
ConHttp::fake() stubbi le risposte senza inviare richieste HTTP reali.
Fake di base
Test di risposte di errore
Simulazione di errori di rete
Fake di eventi, email e notifiche
Event::fake()
Mail::fake()
Notification::fake()
Test dei comandi Artisan
Test di comandi interattivi
RefreshDatabase e LazilyRefreshDatabase
RefreshDatabase
Dopo ogni test fa rollback del database, mantenendolo pulito. All’avvio della test suite esegue la migrazione.
LazilyRefreshDatabase
Con RefreshDatabase la migrazione viene verificata in tutti i test; con LazilyRefreshDatabase viene rimandata finché un test non modifica effettivamente il DB. Se hai molti test che non toccano il DB, velocizza la suite.
Misurare la code coverage
Servono Xdebug o PCOV.Pagine correlate
Introduzione ai test
Rivedi le basi dei test in Laravel e l’uso di
php artisan test.