Behat PHP: Komplettleitfaden mit Beispielen & Tipps

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

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);
    }
}

Empfehlungen