我正在測試一些擴展了默認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