Was ist Pest?
Pest ist ein auf PHPUnit aufbauendes Test-Framework und in neuen Projekten ab Laravel 11 die Standardwahl. Sie können die umfangreichen Assertions von PHPUnit weiter nutzen und Tests dazu in prägnanter, Closure-basierter Syntax schreiben. Wichtige Unterschiede zu PHPUnit:Pest-Tests laufen auf PHPUnit — bestehende PHPUnit-Tests können nebeneinander bestehen. Ausführen mit
php artisan test oder vendor/bin/pest.describe / it / test sinnvoll einsetzen
test()
Die einfachste Form. Der Testname dient als Beschreibung.
it()
Erlaubt eine natürlichere „it should …”-Formulierung.
describe()
Gruppiert zusammengehörige Tests. Praktisch zum Teilen von beforeEach() und zur logischen Gliederung.
Expectation API
expect() ist Pests eigene Assertion-Syntax mit Method-Chains.
Grundlegende Assertions
Assertions auf Modellen
and()-Chain
each() — jedes Array-Element prüfen
Parametrisierte Tests mit Datasets
Um dieselbe Logik mit mehreren Eingaben zu testen, verwenden Siedataset() oder inline with().
Inline-Dataset
Benannte Datasets
Definieren Sie Datasets im Verzeichnistests/Datasets.
Dynamische Datasets über Closures
Unit-Tests mit Mockery
Service mocken
Spies
Spies führen die reale Implementierung aus und protokollieren Aufrufe.Partial Mocks
Nur einzelne Methoden mocken, den Rest real ausführen.Tests externer API-Aufrufe mit HTTP-Fakes
Http::fake() stubbt Responses, sodass keine echten HTTP-Requests gesendet werden.
Grundlegender Fake
Fehler-Response testen
Netzwerkfehler simulieren
Fakes für Events, Mails und Notifications
Event::fake()
Mail::fake()
Notification::fake()
Tests von Artisan-Commands
Interaktive Commands testen
RefreshDatabase und LazilyRefreshDatabase
RefreshDatabase
Rollt die Datenbank nach jedem Test zurück und hält sie sauber. Führt beim Start der Suite die Migrationen aus.
LazilyRefreshDatabase
Während RefreshDatabase für jeden Test Migrationen prüft, wartet LazilyRefreshDatabase bis zum ersten DB-Zugriff. Wenn viele Tests die Datenbank gar nicht anfassen, beschleunigt das die Suite.
Code Coverage messen
Erfordert Xdebug oder PCOV.Verwandte Seiten
Einstieg in Tests
Grundlagen des Testens in Laravel und die Nutzung von
php artisan test.