web-dev-qa-db-fra.com

Méthodes moqueuses pour lancer une erreur

PHPUnit m'a laissé créer un stub de méthode pour lancer une exception, en utilisant soit:

  • [->will($this->throwException(..)][1]
  • ->willThrowException(..

Je dois tester certains cas où le stub de méthode jette PHP Errors.

Est-ce que PHPUnit supporte quelque chose comme ça? Des solutions de contournement ici?

7
Nikhil Kuriakose

ThrowException () dans la classe PHPUnit TestCase peut prendre n'importe quelle instance de Throwable en tant que paramètre.

Ça signifie,

->will($this->throwException(new Error()));
->will($this->throwException(new Exception()));

sont tous deux valides

6
Nikhil Kuriakose

Vous pouvez créer une fonction dans un test en faisant une exception comme ceci:

$handlerConsentMessage = $this->getMockBuilder('YourClass')
            ->setMethods(array('yourMethod'))->getMock();

$handlerConsentMessage->method('yourMethod')->willThrowException(new Exception());

$handlerConsentMessage->run('functionToRun');

Maintenant, lorsque vous exécutez votre fonction de test functionToRun, si la fonction YourMethod est appelée, elle lève une exception.

2
Matt Doran

Juste déclencher une erreur:

$foo
    ->expects($this->once())
    ->method('bar')
    ->willReturnCallback(function () {
        trigger_error(
            'Now really is not a good time',
            E_USER_ERROR
        );
    });

Pour référence, voir:

2
localheinz