模拟抛出错误phpunit的方法

Nik*_*ose 10 php phpunit unit-testing

PHPUnit让我使用以下任一方法创建方法存根以抛出异常:

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

我需要测试方法存根抛出PHP错误的一些情况.

PHPUnit是否支持这样的东西?这里有变通方法吗?

Nik*_*ose 10

PHPUnit TestCase类中的throwException()可以将Throwable的任何实例作为param.

这意味着,

->will($this->throwException(new Error()));
->will($this->throwException(new Exception()));
Run Code Online (Sandbox Code Playgroud)

都是有效的

  • 顺便说一句,您可以使用`willThrowException()`代替. (6认同)

Mat*_*ran 6

您可以在测试中使函数抛出异常,如下所示:

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

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

$handlerConsentMessage->run('functionToRun');
Run Code Online (Sandbox Code Playgroud)

现在,如果您曾经调用过函数YourToMethod,则在运行测试函数functionToRun时,它将引发异常。