PHPUnit存根抛出异常但不允许被捕获

时间:2011-04-19 15:45:00

标签: php phpunit

我正在尝试使用在调用某个方法create时抛出异常的存根来测试try / catch块。它工作正常,异常被引发,但它不是我的应用程序捕获它,它停止测试的执行。有什么更好的方法可以做到这一点。

<?php
// TestCase
        $mockDao->expects($this->once())
                ->method('create')
                ->will($this->throwException(new \Exception));

        $service->addEntity($data);
?>


<?php
// Service
    public function addEntity($data)
    {
           ....

        try {
               ...
            $this->create($entity); // Test Halts with Exception
               ...
        } catch (Exception $e) {
           // Never Gets Called
           $this->handleException($e);
        }
    }

1 个答案:

答案 0 :(得分:8)

您正在投掷\Exception但正在追赶Exception。是否在命名空间中实现addEntity()的类?更改它以捕获\Exception可以解决问题吗?如果没有,请尝试更改测试以抛出Exception