2017-08-15 43 views
0

關於如何在phpunit測試中測試CakePHP控制器Flash消息內容的任何想法?我需要測試這一點:如何在phpunit測試中聲明Flash消息的內容?

if ($var == "yes") { 
    //do something 
} else {   
    $this->Flash->error(__('Invalid username or password, try again;)); 
} 
+0

我想你應該通過使用像硒這樣的UI來測試這個。基本上:1)執行應該觸發閃光消息的動作2)檢查重定向3)檢查頁面上的閃光消息 – dbrumann

回答

0

按照documentation,如果您使用的版本3.4.7或更高版本,可以發出你的GET/POST /不管之前使用enableRetainFlashMessages()函數。然後你可以使用assertSession()來檢查flash消息的存在。

例子:

$this->enableRetainFlashMessages(); 
$this->get('call-your-public-controller-function-here'); 
$this->assertSession('Invalid username or password, try again', 'Flash.flash.0.message'); 

我說「根據文檔」,因爲我實際上使用的是舊版本,現在(3.1.13)不包括該方法,所以我沒有親自測試上面的代碼。然而,我發現,在我使用的版本中,我基本上可以在不發出enableRetainFlashMessages()調用的情況下做同樣的事情。通過使用assertSession(),我可以使用上述過程來檢查預期消息的存在。我曾以爲這不起作用,但它確實! (這從來沒有發生......)