模拟方法抛出错误 phpunit

2022-08-30 17:40:37

PHPUnit 让我创建一个方法存根来引发异常,使用以下任一方法:

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

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

PHPUnit 是否支持此类内容?这里有任何解决方法吗?


答案 1

PHPUnit TestCase 类中的 throwException() 可以将 Throwable 的任何实例作为参数。

这意味着,

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

均有效


答案 2

您可以使测试中的函数引发异常,如下所示:

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

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

$handlerConsentMessage->run('functionToRun');

现在,当您运行测试函数ToRun时,如果调用函数YourMethod,它将引发异常。


推荐