Abhängigkeiten mit PHPUnit mocken
Erstellen Sie Mock-Objekte, um Einheiten zu isolieren und das Verhalten von Abhängigkeiten zu steuern.
Abhängigkeiten mit PHPUnit mocken ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Mocking?
Beim Mocking wird eine echte Abhängigkeit (Datenbank, E-Mail-Dienst, HTTP-Client) durch ein kontrollierbares Fake ersetzt, damit Tests schnell, isoliert und deterministisch sind.
createMock()
createMock(ClassName::class) erstellt ein Mock-Objekt, das alle Methoden der Klasse implementiert und standardmäßig null zurückgibt.
<?php
$mailer = $this->createMock(Mailer::class);
// All methods return null by defaultMethodenaufrufe erwarten
Verwenden Sie expects() mit Matchern wie once(), exactly(3), never() und any(), um zu überprüfen, dass Methoden die richtige Anzahl an Malen aufgerufen werden.
<?php
$mailer->expects($this->once())
->method("send")
->with("user@example.com", "Welcome!");Rückgabewerte vorgeben
Verwenden Sie willReturn(), damit eine Mock-Methode einen bestimmten Wert zurückgibt.
<?php
$repo = $this->createMock(UserRepository::class);
$repo->method("find")
->willReturn(new User(id: 1, name: "Alice"));willReturnMap()
Geben Sie abhängig vom Argument unterschiedliche Werte zurück, indem Sie willReturnMap() verwenden.
<?php
$cache->method("get")
->willReturnMap([
["key:1", "value-one"],
["key:2", "value-two"],
]);willThrowException()
Lassen Sie ein Mock eine Exception auslösen, um Fehlerbehandlungspfade zu testen.
<?php
$repo->method("find")
->willThrowException(new DatabaseException("Connection lost"));Argument-Matcher
Verwenden Sie Argument-Matcher in with() für flexible Assertions: $this->anything(), $this->equalTo(), $this->isInstanceOf().
<?php
$logger->expects($this->once())
->method("log")
->with($this->stringContains("error"));Partielle Mocks (getMockBuilder)
Verwenden Sie getMockBuilder() mit onlyMethods(), um bestimmte Methoden zu mocken und für andere die echten Implementierungen beizubehalten.
<?php
$svc = $this->getMockBuilder(EmailService::class)
->onlyMethods(["sendRaw"])
->getMock();
$svc->method("sendRaw")->willReturn(true);Spy-Muster
Ein Spy zeichnet alle Aufrufe auf, sodass Sie sie nach der Ausführung überprüfen können – PHPUnit-Mocks können sich mit any() und dem Erfassen von Argumenten wie Spies verhalten.
Mocks injizieren
Übergeben Sie Mocks per Konstruktor-Injection an die zu testende Klasse – das ist das Standardmuster für testbaren, lose gekoppelten Code.
<?php
$service = new NotificationService($mailer, $logger);
$service->notify($user);Mocks von Interfaces vs. konkreten Klassen
Das Mocking von Interfaces wird bevorzugt – Implementierungsdetails beeinflussen den Test nicht, und die Tests bleiben gültig, selbst wenn sich die echte Implementierung ändert.
Zusammenfassung
Verwenden Sie createMock(), um Abhängigkeiten zu isolieren. Verwenden Sie expects()->method()->with()->willReturn(), um Erwartungen und Stubs festzulegen. Injizieren Sie Mocks über den Konstruktor.
Schnelltest
Welche Methode sorgt dafür, dass ein Mock einen bestimmten Wert zurückgibt?
Lerne PHP mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 49
- Lektionen
- 195
Häufig gestellte Fragen
Ist die Lektion „Abhängigkeiten mit PHPUnit mocken“ kostenlos?
Ja — der vollständige Text von „Abhängigkeiten mit PHPUnit mocken“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Abhängigkeiten mit PHPUnit mocken“?
Erstellen Sie Mock-Objekte, um Einheiten zu isolieren und das Verhalten von Abhängigkeiten zu steuern. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Abhängigkeiten mit PHPUnit mocken“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- PHPUnit einrichten und den ersten Test schreiben
- Assertions und Testmethoden
- Datenprovider für parametrisierte Tests
- Abhängigkeiten mit PHPUnit mocken