【问题标题】:PHPUnit stub throws exception but isn't allowed to be caughtPHPUnit 存根抛出异常但不允许被捕获
【发布时间】:2011-08-08 19:25:58
【问题描述】:

我正在尝试使用在调用某个方法 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);
        }
    }

【问题讨论】:

    标签: php phpunit


    【解决方案1】:

    您正在抛出 \Exception,但正在捕获 Exception。实现addEntity() 的类是否在命名空间中?将其更改为捕获\Exception 是否可以解决问题?如果不是,请尝试将测试更改为 throw Exception

    【讨论】:

    • 哇。是的,你完全正确,谢谢。我一定已经重构和洗牌了 2 个小时,试图看看发生了什么。我什至没有考虑过。
    • 遇到了同样的问题,因为测试的代码是命名空间的并且异常没有反斜杠。
    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2015-08-29
    • 1970-01-01
    • 2016-02-17
    相关资源
    最近更新 更多