Pest für PHP: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Pest und warum wird es benötigt?

Pest ist ein modernes, elegantes Test-Framework für PHP, das 2021 von Nuno Maduro entwickelt wurde. Im Gegensatz zu traditionellen Lösungen wie PHPUnit bietet Pest eine prägnantere und ausdrucksstärkere Syntax, die von Jest (JavaScript) und RSpec (Ruby) inspiriert ist. Wenn PHPUnit das "Schweizer Taschenmesser" für Tests ist, dann ist Pest das "Skalpell", mit dem Sie Tests schneller, sauberer und mit weniger Boilerplate-Code schreiben können.

Das Hauptziel von Pest ist es, das Schreiben von Tests so angenehm und intuitiv wie möglich zu gestalten. Anstelle von Klassen und Methoden mit langen Namen verwenden Sie Closures und eine fließende Schnittstelle (Fluent Interface). Dies ist besonders nützlich für Projekte, bei denen Entwicklungsgeschwindigkeit und Code-Lesbarkeit wichtig sind, wie z. B. in Startups, API-Diensten oder bei der Teamarbeit, bei der Tests nicht nur von QA-Ingenieuren, sondern auch von Entwicklern geschrieben werden.

Die wichtigsten Vorteile von Pest gegenüber PHPUnit:

  • Prägnanz: Weniger Code für denselben Test.
  • Lesbarkeit: Tests sehen aus wie natürliche Sprache (z. B. expect($result)->toBeTrue()).
  • Integrierte Funktionen: beforeEach(), afterEach(), todo() und mehr.
  • Architektur: Keine zwingende Vererbung von TestCase erforderlich.
  • Ökosystem: Plugins für Laravel, Livewire, Mockery und andere beliebte Tools.

Installation von Pest

Pest wird über Composer installiert, den Standard-Paketmanager für PHP. Stellen Sie sicher, dass PHP Version 8.0 oder höher installiert ist.

Erstellen Sie ein neues Projekt oder wechseln Sie in das Stammverzeichnis eines bestehenden Projekts:

mkdir my-pest-project
cd my-pest-project
composer init --yes

Installieren Sie Pest als Entwicklungsabhängigkeit (dev):

composer require pestphp/pest --dev

Initialisieren Sie Pest nach der Installation in Ihrem Projekt:

./vendor/bin/pest --init

Dieser Befehl erstellt die grundlegende Struktur:

  • tests/ — Verzeichnis für Tests.
  • tests/Pest.php — Datei mit globalen Einstellungen (z. B. uses()).
  • phpunit.xml — Konfigurationsdatei (Pest läuft auf Basis von PHPUnit).

Jetzt können Sie die Tests ausführen:

./vendor/bin/pest

Wenn Sie Laravel verwenden, installieren Sie das zusätzliche Paket für eine bessere Integration:

composer require pestphp/pest-plugin-laravel --dev

Schnellstart mit einem Codebeispiel

Erstellen Sie die Datei tests/ExampleTest.php:

<?php

test('basic assertion', function () {
    $result = 1 + 1;
    expect($result)->toBe(2);
});

Führen Sie die Tests aus:

./vendor/bin/pest

Sie sehen eine grüne Ausgabe mit der Meldung PASS Tests\ExampleTest. Beachten Sie: Wir haben keine Klassen, Methoden mit Annotationen oder Vererbung verwendet. Einfach die Funktion test() und ein Closure. Das ist "modernes Testen".

Alternative Syntax mit dem Schlüsselwort it (lesbarer für die Beschreibung des Verhaltens):

it('performs basic addition', function () {
    $sum = 2 + 3;
    expect($sum)->toEqual(5);
});

Wichtige Methoden und Funktionen von Pest

Nachfolgend finden Sie 10 wichtige Methoden und Funktionen von Pest mit detaillierter Beschreibung und Beispielen.

1. test() — Testdefinition

Was es tut: Erstellt einen neuen Test. Dies ist die Hauptfunktion zur Definition eines Testszenarios.

Parameter:

  • string $description — Beschreibung des Tests (wird in der Konsole angezeigt).
  • callable $closure — Closure, das die Testlogik enthält.

Empfehlungen