對 PHP 錯誤進行測試

在還沒有異常機制之前, PHP 是利用錯誤處理機制來管理程式的錯誤。一般來說,我們不太可能去預期程式所出現的錯誤,而是在發生錯誤前用預防機制處理掉。

但如果知道某段程式可能引發 PHP 錯誤時, PHPUnit 也可以處理。

PHP 錯誤測試

PHPUnit 會將 PHP 錯誤包裝成異常,所以我們可以直接利用 @expectedException 註記,搭配 PHPUnit_Framework_Error 類別來測試程式是否會產生 PHP 錯誤。

<?php
class ErrorTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException PHPUnit_Framework_Error
     */
    public function testFileWriting()
    {
        $this->assertFalse(file_put_contents('/is-not-writeable/file', 'stuff'));
    }
}

另外 PHPUnit_Framework_Error_NoticePHPUnit_Framework_Error_Warning 分別代表 PHP 通知與 PHP 警告。

官方手冊參考

練習

  • 試著找出 PHPUnit_Framework_Error_NoticePHPUnit_Framework_Error_Warning 的應用實例。