首页 > 解决方案 > 在单元测试模拟中抛出 \Doctrine\DBAL\Driver\DriverException

问题描述

编辑单元测试,我遇到了这个问题。我要测试的一段代码捕获了一个\Doctrine\DBAL\Exception\RetryableException. 类链中的第一个构造函数是这样的,DriverException并且是这样构建的:

/**
 * @param string                                $message         The exception message.
 * @param \Doctrine\DBAL\Driver\DriverException $driverException The DBAL driver exception to chain.
 */
public function __construct($message, \Doctrine\DBAL\Driver\DriverException $driverException)
{
    $exception = null;

    if ($driverException instanceof Exception) {
        $exception = $driverException;
    }

    parent::__construct($message, 0, $exception);

    $this->driverException = $driverException;
}

我觉得我在这里遇到了鸡蛋和鸡肉的问题。我怎样才能实例化一个首先将自身实例作为强制参数的类?

标签: doctrinesymfony-3.4php-7.2

解决方案


注意:我不会将此自动回复标记为解决方案,它更像是一种解决方法。

我没有在我的单元测试模拟中抛出正确的异常,而是创建了一个更简单的异常,扩展Exception但仍实现原始接口RetryableException,因为它是我正在测试的代码中捕获的接口。虽然不是我想做的,但在我的确切情况下它可以完成工作。


推荐阅读