Cos’è il testing
Il testing è il meccanismo che verifica automaticamente che il codice funzioni come previsto. Scrivere test ti permette di verificare rapidamente che aggiungere o modificare funzionalità non rompa il comportamento esistente. Nello sviluppo in team i test danno sicurezza nel modificare il codice e nelle code review. Laravel supporta il testing fin dall’inizio: puoi usare sia Pest sia PHPUnit. Alla creazione del progetto trovi automaticamente il filephpunit.xml e la directory tests/.
Struttura della directory tests/
Feature/— Feature test: test di grande granularità che includono richieste HTTP. Verificano il funzionamento di più oggetti insieme o endpoint API, quindi test più vicini all’applicazione completa. La maggior parte dei test starà qui.Unit/— Unit test: test di piccola granularità per singola classe o metodo. L’applicazione Laravel non viene avviata, quindi non puoi usare database o altre funzionalità del framework.
Creazione di un test
Con il comando Artisanmake:test generi una nuova classe di test.
tests/Feature/TodoTest.php.
Esecuzione dei test
Esegui i test con il comandophp artisan test.
vendor/bin/pest o vendor/bin/phpunit per lo stesso risultato, ma php artisan test mostra un output più leggibile ed è consigliato.
Per eseguire solo una suite:
Come scrivere test base
Esempio di asserzioni semplici.Asserzioni più comuni
Test HTTP
Con i test HTTP di Laravel puoi simulare richieste alle route senza avviare un vero server HTTP. È una funzionalità potente delle classi di test nella directoryFeature/.
Verifica della visualizzazione di una pagina
Conget() invii una richiesta GET e verifichi la response.
Esempio di test HTTP di un’app ToDo
Con un’app che ha il modelloTodo, testiamo le operazioni CRUD.
Asserzioni comuni sulle response
Con il trait
RefreshDatabase il database viene resettato dopo ogni test. Serve a evitare che i dati interferiscano tra i test.Ambiente di test
Configurazione di phpunit.xml
Configura l’ambiente di test nel file phpunit.xml nella root del progetto.
Di default sessione e cache usano il driver array, così i dati non permangono tra i test.
File .env.testing
Creando .env.testing nella root del progetto, verrà usato al posto di .env durante i test.
Utile se vuoi separare connessioni al database o servizi esterni dedicati ai test.
Esecuzione parallela dei test
Con l’aumentare del numero di test cresce anche il tempo di esecuzione. Con l’opzione--parallel esegui i test su più processi contemporaneamente per ridurre i tempi.
Installa prima il pacchetto brianium/paratest.
--parallel.
--processes.
Prossimi passi
Test HTTP
Approfondisci simulazione delle richieste, test autenticati, asserzioni JSON e altri aspetti.