![](/img/trans.png)
[英]PHPUnit throws a PHPUnit_Framework_Exception with no error message
[英]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.