【发布时间】:2015-06-01 14:16:28
【问题描述】:
我正在为一个处理 XML 的新 PHP 类 (v5.3.3) 编写 PHPUnit 测试 (v4.6.7)。测试的目的是确认类在处理错误的 XML 时抛出 DOMException。
我想收集异常并对其执行assertInstanceOf,将其与DOMException 进行比较。
无论我做什么,当我看到异常时,phpunit 已经将原始异常转换为PHPUnit_Framework_Error_Warning 的实例。
例如,下面是测试代码中的一项工作:
//...
try {
$this->code_that_causes_exception();
} catch (\Exception $exception) {
$className = get_class($exception);
throw $exception;
}
//...
在 phpunit 中运行时,存储在 $className 中的字符串是 PHPUnit_Framework_Error_Warning,而不是 code_that_causes_exception 实际引发的任何异常。
开始更新
只是为了澄清我的问题,没有尝试/捕获被测代码,phpunit 报告的消息是DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1。我做出了一个可能轻率的假设,即 DOMDocument 会抛出某种异常来生成此消息。 DOMDocument 表示 DOMException 是 DOMDocument 对象抛出的异常的父级。
结束更新
我想要原始异常,以便我可以使用适当的 try/catch 包装被测代码,以优雅地处理这种失败情况。
如何获取实例化 PHPUnit_Framework_Error_Warning 的原始异常?
【问题讨论】:
标签: php exception exception-handling phpunit