簡體   English   中英

phpunit獲取異常消息

[英]phpunit get exception message

我剛剛開始使用php單元。 在我的測試案例中,UsersController應該返回:

public function UsersController() {
    ....
    throw new \Cake\Network\Exception\NotFoundException();
}

phpunit代碼

$this->setExpectedException('Cake\Network\Exception\NotFoundException');

返回一個斷言失敗,看起來像:

App \\ Test \\ TestCase \\ Controller \\ UsersControllerTest :: testActivate斷言拋出“ Cake \\ Network \\ Exception \\ NotFoundException”類型的異常,失敗。

同時,瀏覽器返回404 PageNotFound,並且$this->assertResponseOk()返回:

App \\ Test \\ TestCase \\ Controller \\ UsersControllerTest :: test激活異常'Cake \\ Network \\ Exception \\ NotFoundException'並在/vagrant/ifmx.local/src/Controller/UsersController.php:215中顯示消息'Not Found'

有人知道為什么會這樣嗎? 並且有什么方法可以在單元測試中獲取異常消息。

您似乎誤解了集成測試用例的工作方式。

它不僅包裝對控制器方法的調用,例如$controller->action() ,它還模擬了整個請求,因此,捕獲了異常並導致呈現錯誤頁面,就像發生在您正在瀏覽器中訪問URL。

因此,PHPUnit將永遠不會知道該異常,因此您無法像預期的那樣直接使用特定的代碼部分來測試異常到PHPUnit時,無法使用預期的異常功能。 如果發生這種情況,那么即使聲明了異常,也無法斷言可能想要執行的響應。

可能的異常將在IntegrationTestCase::$_exception屬性中進行緩沖,例如,您可以使用該屬性來測試是否拋出了何種異常,等等。

$this->assertInstanceOf('\Cake\Network\Exception\NotFoundException', $this->_exception);
$this->assertEquals('Not Found', $this->_exception->getMessage());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM