[英]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.