Signatur
Beschreibung
uopz_unset_mock() ist Teil der uopz-Extension (User Operations for Zend) und macht einen mit uopz_set_mock() gesetzten Mock für die angegebene Klasse rückgängig. Nach dem Aufruf werden alle nachfolgenden Instanziierungen der Klasse wieder die originale Implementierung verwenden.
Diese Funktion ist primär für Unit-Tests gedacht, bei denen Klassen temporär durch Mocks ersetzt werden, um Abhängigkeiten zu isolieren. Der Aufruf von uopz_unset_mock() sollte typischerweise im Teardown des Tests erfolgen, um sicherzustellen, dass keine gesetzten Mocks in anderen Tests "durchbluten".
Wird uopz_unset_mock() für eine Klasse aufgerufen, für die kein Mock gesetzt ist, hat der Aufruf keine Wirkung und erzeugt keinen Fehler.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $class Pflicht | string | Der vollqualifizierte Name der Klasse (ohne führenden Backslash), deren Mock entfernt werden soll. Muss mit dem Klassennamen übereinstimmen, der zuvor an uopz_set_mock() übergeben wurde. |
Rückgabewert
Beispiele
Mock setzen und anschließend wieder entfernen
<?php
class OriginalService {
public function getName(): string {
return 'Original';
}
}
class MockService {
public function getName(): string {
return 'Mock';
}
}
// Mock aktivieren
uopz_set_mock('OriginalService', MockService::class);
$obj1 = new OriginalService();
echo $obj1->getName(); // Gibt "Mock" aus
// Mock wieder entfernen
uopz_unset_mock('OriginalService');
$obj2 = new OriginalService();
echo $obj2->getName(); // Gibt "Original" aus
Einsatz im PHPUnit-Teardown
<?php
use PHPUnit\Framework\TestCase;
class MyServiceTest extends TestCase {
protected function setUp(): void {
uopz_set_mock('Mailer', MockMailer::class);
}
protected function tearDown(): void {
// Sicherstellen, dass der Mock nach jedem Test entfernt wird
uopz_unset_mock('Mailer');
}
public function testSendWelcomeMail(): void {
$service = new MyService();
$result = $service->sendWelcomeMail('user@example.com');
$this->assertTrue($result);
}
}
// Wichtig · Fallstricke
Achtung: Die uopz-Extension ist ausschließlich für den Einsatz in Entwicklungs- und Testumgebungen gedacht. Sie sollte niemals in Produktionssystemen aktiviert sein, da sie fundamentale Laufzeitmechanismen von PHP verändert.
Falls ein Mock nicht korrekt entfernt wird (z. B. durch einen fehlgeschlagenen Test), können nachfolgende Tests unerwartet den Mock statt der Originalklasse verwenden. Ein konsequenter Einsatz von uopz_unset_mock() im Teardown ist daher essenziell.
Die Funktion ist ab uopz 5.0.0 verfügbar und erfordert PHP 7.0 oder höher.