繁体   English   中英

ZF2 PHPUnit断言异常

[英]ZF2 PHPUnit assert Exception

我尝试查看控制器是否抛出异常

在我的控制器中,我有一个“ throw new \\ RuntimeException”

在我的测试中,如果我放置setExpectedException('RuntimeException'),则如果整个测试失败,则我的断言将失败

我该怎么办?

class myController extends AbstractActionController {
    public function indexAction() {
        ...
        throw new \RuntimeException;
    }
}

class myControllerTest extends AbstractHttpControllerTestCase {
    public function testIndexAction() {
        ...
        $this->setExpectedException('RuntimeException');
        ...
        $this->dispatch('/');
   }
}

输出为'setExpectedException':

1)ApplicationTest \\ Controller \\ myControllerTest :: testIndexAction断言抛出“ \\ RuntimeException”类型的异常失败。

输出不带:

1)数据集为#0的ApplicationTest \\ Controller \\ myControllerTest :: testIndexAction(false,'',1)RuntimeException:

/home/bruno/public_html/jacuzzi/module/Application/src/Application/Controller/myController.php:60 /home/bruno/public_html/jacuzzi/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php :82 /home/bruno/public_html/jacuzzi/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:444 / home / bruno / public_html / jacuzzi / vendor / zendframework / zendframework / library / Zend / EventManager / EventManager .php:205 /home/bruno/public_html/jacuzzi/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php:118 / home / bruno / public_html / jacuzzi / vendor / zendframework / zendframework / library / Zend /Mvc/DispatchListener.php:93 /home/bruno/public_html/jacuzzi/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:444 / home / bruno / public_html / jacuzzi / vendor / zendframework / zendframework / library /Zend/EventManager/EventManager.php:205 / home / bruno / public_html / jacuzzi / vendor / zendframework / zendframework / library / Zend / Mvc / Appli 阳离子.php:314 /home/bruno/public_html/jacuzzi/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:282 / home / bruno / public_html / jacuzzi / module / Application / test / ApplicationTest /控制器/ myControllerTest.php:188

PS:我使用ZF 2.4.4和PHPUnit 4.7.8

它看起来像你使用的是数据提供程序,以允许testAction遍历潜在的输入数据-因此with data set在输出ApplicationTest\\Controller\\myControllerTest::testIndexAction with data set #0 (false, '', 1)

我可能会猜测您的数据提供者提供的某些情况是成功的,因此不应触发该异常,而某些情况应该触发该异常,如果您始终或从未告诉PHPUnit期望,则在两种情况下均会导致失败例外。

对于此类情况,我的典型方法是将异常作为参数之一传递给测试函数,并使用NULL表示不应预期异常的情况。 然后,您可以在test函数中使用类似以下的构造,以便有条件地期望该异常:

if ($expectedException !== null) {
    $this->setExpectedException($expectedException);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM