Nat*_*nes 6 php phpunit unit-testing exception
我有一组测试,我想测试我的类在正确的时间抛出异常.在示例中,我的类使用__get()魔术方法,因此我需要测试在检索到无效属性时抛出异常:
function testExceptionThrownWhenGettingInvalidProperty() {
$obj = new MyClass();
$this->setExpectedException("Property qwerty does not exist");
$qwerty = $obj->qwerty;
}
Run Code Online (Sandbox Code Playgroud)
该类会抛出错误,但不是仅仅获取传递,而是捕获异常!
There was 1 error:
1) QueryTest::testExceptionThrownWhenGettingInvalidProperty
Exception: Property qwerty does not exist
Run Code Online (Sandbox Code Playgroud)
我之前使用过SimpleTest,$this->expectException(new Exception("Property qwerty does not exist"));工作得很好.我知道还有其他方法(@expectedException和try-catch),但是这个方法应该可以工作,看起来更清晰.我有什么想法可以使这项工作?
irc*_*ell 13
它不是在异常中查找文本,它正在查找异常类的名称... Docs
$this->setExpectedException('Exception');
Run Code Online (Sandbox Code Playgroud)
当您使用SPL Exceptions或自定义异常类时,它非常方便...
rye*_*guy 13
添加到ircmaxell的答案,实际上有一种更简单的方法:
/**
* @expectedException MyExceptionClass
* @expectedExceptionMessage Array too small
*/
public function testSomething()
{
}
Run Code Online (Sandbox Code Playgroud)
该@expectedException异常的类名的期望,并且@expectedExceptionMessage是异常消息的一个子期待(这是正确的,你不必拥有整个消息).
如果您不想使用docblock注释,则这两个注释实际上都可用作测试用例的方法.
| 归档时间: |
|
| 查看次数: |
7211 次 |
| 最近记录: |