Behat für PHP: Komplettleitfaden mit Beispielen
1. Was ist Behat und warum braucht man es?
Behat ist ein leistungsstarkes PHP-Framework für Behaviour-Driven Development (BDD). Es ermöglicht Ihnen, das Verhalten einer Anwendung in einer verständlichen, fast natürlichen Sprache (Gherkin) zu beschreiben und anschließend automatisch zu prüfen, ob der Code dieser Beschreibung entspricht. Behat fungiert als Brücke zwischen nicht-technischen Teammitgliedern (Produktmanager, Analysten, Kunden) und Entwicklern, indem es ein einheitliches "lebendiges" Dokument bereitstellt, das sowohl Spezifikation als auch Testsuite ist.
Warum Behat nutzen? In erster Linie zur Verbesserung der Kommunikation und zur Reduzierung von Risiken durch falsch verstandene Anforderungen. Anstatt technische Unit-Tests zu schreiben, die prüfen, wie eine Funktion arbeitet, schreiben Sie Szenarien, die beschreiben, was das System aus Benutzersicht tun soll. Zum Beispiel: Statt "testLogin()" schreiben Sie "Der Benutzer gibt gültige Daten ein und klickt auf 'Anmelden'". Das macht Tests für alle Beteiligten lesbar. Außerdem eignet sich Behat hervorragend für Integrations- und E2E-Tests (End-to-End) von Webanwendungen, APIs und Konsolenbefehlen.
Behat lässt sich nahtlos mit Mink integrieren – einer Bibliothek zur Browser-Emulation, die das Testen von Weboberflächen ermöglicht. Es kann aber auch für reine PHP-Code-Tests ohne Webkontext verwendet werden. Die grundlegende Idee von BDD, die in Behat umgesetzt wird: "Zuerst das Szenario schreiben, dann den Code, der das Szenario grün macht."
2. Installation
Die Installation von Behat erfolgt über Composer, den Standard-Paketmanager für PHP. Führen Sie dazu im Terminal im Stammverzeichnis Ihres Projekts folgenden Befehl aus:
composer require --dev behat/behat
Dieser Befehl installiert Behat und alle seine Abhängigkeiten im Verzeichnis vendor/ und fügt einen Eintrag in der Datei composer.json hinzu.
Wenn Sie Webanwendungen testen möchten, benötigen Sie außerdem Mink und einen seiner Treiber (z. B. Goutte für schnelle Tests ohne JavaScript oder Selenium2 für Tests mit einem echten Browser):
composer require --dev behat/mink-extension behat/mink-goutte-driver behat/mink-selenium2-driver
Nach der Installation initialisieren Sie Behat in Ihrem Projekt:
vendor/bin/behat --init
Dieser Befehl erstellt die Verzeichnisstruktur: features/ (für .feature-Dateien) und features/bootstrap/ (für die Kontextklasse FeatureContext.php).
3. Schnellstart – Minimales funktionierendes Beispiel
Erstellen Sie die Datei features/hello.feature:
Feature: Hello World
Um zu sehen, wie Behat funktioniert
Als Entwickler
möchte ich einen einfachen Test ausführen können
Scenario: Sag Hallo zum Benutzer
Given I have a greeting program
When I run it with name "World"
Then I should see "Hello, World!"
Bearbeiten Sie nun die Datei features/bootstrap/FeatureContext.php:
greeting = function($name) {
return "Hello, " . $name . "!";
};
}
/**
* @When I run it with name :name
*/
public function iRunItWithName($name)
{
$this->output = call_user_func($this->greeting, $name);
}
}
Auch in der Bibliothek
JSON-Verarbeitung in C# (.NET): Vollständige Anleitung mit Beispielen
Arbeiten mit Daten in Rust: Überblick über Bibliotheken für Zeit und Kalender
Testen in Go (Golang): Frameworks und Tools
Go (Golang) Standardbibliothek: vollständiger Überblick