我正在测试一些扩展了默认php异常对象的遗留代码。此代码打印出一个自定义HTML错误消息。phpUnit - 模拟php扩展异常对象
我想嘲笑这个异常对象的方式,当被测试的代码生成一个异常时,它只会回应基本消息,而不是给我整个HTML消息。
我想不出有办法做到这一点。您似乎可以测试显式异常,但不能以通常方式更改异常的行为,并且也不能模拟扩展默认php功能的对象。 (不能认为这超出了例外另一个例子......但它似乎是这种情况),我想这个问题是
,在那里你会并附上模拟的对象?似乎你不能干预'抛新',这是对象方法被称为的地方....
或者,如果你能以某种方式使用现有的phpunit异常功能来改变异常行为的方式你想,在所有代码的一般方式...但是这似乎将是哈克和坏....
编辑:这里是一些代码,以使事情更清晰:
class FooTest extends PHPUnit_Framework_TestCase{
public function testBar(){
include '/path/to/file.php'; //generates exception
$this->assertTrue($baz);
}
}
...
//overridden exception class
class Foo_Exception extends ErrorException{
...
所以,我的问题是,有没有办法处理这个被覆盖的类,而不是根据具体情况来做呢?如果我不测试异常的行为,只是导致异常的代码?
好了,现在我感到困惑。要么包括的例外没有被捕获,然后我的第一个答案成立或被捕获,我的第二个答案成立。这种例外是无关紧要的。 – Artefacto 2010-05-14 23:46:22
你是对的...我很困惑ob_start如何处理... 但是...你的解决方案确实能够抑制错误消息,但它也意味着它将所有输出同等对待...... I猜测我是在问一个更具体的解决方案来处理异常类本身......但现在我认为这一切似乎并不可行......或者一定需要...... I猜测处理对象行为的最佳情况是引发每个案例的例外情况。 有时事情只有当你问一个模糊的问题时才有意义...... – awongh 2010-05-15 01:02:59