我想做的事情如下:
$I->setExpectedException('Laracasts\Validation\FormValidationException');
在一个功能性的概念。有机会这样做吗?
\PHPUnit_Framework_TestCase::setExpectedException('Laracasts\Validation\FormValidationException');
上面的代码可以独立工作,但是如果我运行codecept run
,一旦带有预期异常的测试完成,测试就会卡住。
我的设置如下:
YML:
class_name: FunctionalTester
modules:
enabled: [Filesystem, Db, FunctionalHelper, Laravel4, Asserts]
3条答案
按热度按时间gupuwyp21#
我认为这是一个known problem与Laravel 4模块的codecrement,不确定是否会很快修复,但在此期间,我创建了一个帮助函数来测试异常:
在文件tests/_support/FunctionalHelper.php中添加以下方法:
你可以在你的 Cepts 中这样使用它:
lfapxunr2#
我对Mind的解决方案进行了一些扩展:
在您的概念中,您可以
这样在异常测试方法之外就不需要assertTrue了。如果你也知道抛出了异常,你也可以省略第二个参数。最后你可以把一个消息字符串作为第三个参数。这样你就可以在错误失败时使错误更有表现力。
EDIT对不起,我忽略了一件事。在FunctionalHelper.php中,你必须扩展parents _beforeSuite方法:
EDIT2刚发现如果你隐式Assert抛出了一个异常,并且php的原生异常不是出现的父异常,那么test方法就不起作用,因为该方法只检查第一和第二异常级别。要使该方法检查整个expection堆栈,你必须使用此方法
vkc1a9a23#
另一种方法: