关于如何在phpunit测试中测试CakePHP控制器flash消息内容的任何想法?我需要测试一下:
if ($var == "yes") {
//do something
} else {
$this->Flash->error(__('Invalid username or password, try again;));
}
答案 0 :(得分: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(),我可以使用上述过程检查预期消息是否存在。我以为它不会起作用,但确实如此! (这从未发生过......)