如何在phpunit测试中声明Flash消息的内容?
问题描述:
关于如何在phpunit测试中测试CakePHP控制器Flash消息内容的任何想法?我需要测试这一点:如何在phpunit测试中声明Flash消息的内容?
if ($var == "yes") {
//do something
} else {
$this->Flash->error(__('Invalid username or password, try again;));
}
答
按照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(),我可以使用上述过程来检查预期消息的存在。我曾以为这不起作用,但它确实! (这从来没有发生......)
我想你应该通过使用像硒这样的UI来测试这个。基本上:1)执行应该触发闪光消息的动作2)检查重定向3)检查页面上的闪光消息 – dbrumann