如何在phpunit测试中声明Flash消息的内容?

如何在phpunit测试中声明Flash消息的内容?

问题描述:

关于如何在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

按照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(),我可以使用上述过程来检查预期消息的存在。我曾以为这不起作用,但它确实! (这从来没有发生......)