Mit PHPUnit kann ich einen Methoden-Stub erstellen, um eine Exception auszulösen.
[->will($this->throwException(..)][1]
->willThrowException(..
Ich muss einige Fälle testen, in denen der Methodenstub PHP Fehler auslöst.
Unterstützt PHPUnit so etwas? Gibt es hier Problemumgehungen?
Die throwException () in der TestCase-Klasse von PHPUnit kann jede Instanz von Throwable als Parameter annehmen.
Das heisst,
->will($this->throwException(new Error()));
->will($this->throwException(new Exception()));
sind beide gültig
Sie können eine Funktion in einem Test machen, die eine Ausnahme auslöst:
$handlerConsentMessage = $this->getMockBuilder('YourClass')
->setMethods(array('yourMethod'))->getMock();
$handlerConsentMessage->method('yourMethod')->willThrowException(new Exception());
$handlerConsentMessage->run('functionToRun');
Wenn Sie nun Ihre Testfunktion functionToRun ausführen, wird die Ausnahme, dass die Funktion YourMethod jemals aufgerufen wird, eine Ausnahme auslösen.
Einfach einen Fehler auslösen:
$foo
->expects($this->once())
->method('bar')
->willReturnCallback(function () {
trigger_error(
'Now really is not a good time',
E_USER_ERROR
);
});
Für Referenz siehe: