如何测试FlashBag消息?
试过这个:
public function testInvalidLogin()
{
$session = $this->client->getContainer()->get('session');
$crawler = $this->client->request('GET', '/login');
$this->assertTrue($this->client->getResponse()->isSuccessful());
$form = $crawler->filter('form');
$this->assertGreaterThan(0, $form->count());
$form = $form->form();
$this->assertNotEmpty($form);
$form['_username'] = 'username';
$form['_password'] = 'password';
$this->client->submit($form);
$this->assertTrue($this->client->getResponse()->isRedirect('http://localhost/login'));
$this->client->followRedirect();
$session = $this->client->getContainer()->get('session');
var_dump($session->getBag('flashes')->all()); // this print an empty array
}
登录控制器设置了一条Flash消息“Bad credentials”但我在测试期间无法看到它。
答案 0 :(得分:4)
可能是因为你重定向后弹出flash消息,例如。在模板的某个地方。 Flash包容器在您调用get
方法之后删除flash消息(要指定 - 删除是在实现方法中实现的...)。如果您只想在不弹出消息的情况下获取消息,则应使用peek
方法。
我想如果您在var_dump
之前移动followRedirect
,那么您将得到您期望的结果。