web-dev-qa-db-de.com

Spottmethoden, um Error phpunit auszulösen

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?

7

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

6

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.

2
Matt Doran

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:

2
localheinz