我正在为 Symfony 4.2 应用编写功能测试。
有时我想检查是否设置了 flash消息,所以我创建了此方法:
protected function hasFlash(string $type, int $min = 1) : bool
{
$flashes = $this->client
->getContainer()
->get('session')
->getBag('flashes')
->all();
return count($flashes[$type] ?? []) >= $min;
}
在最初的测试中效果很好。
示例代码示例:
// User can reset password
$crawler = $this->client->request('GET', $uri);
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
// Submit form
$form = $crawler->selectButton('Update')->form($form_data);
$this->client->submit($form);
$this->assertSame(302, $this->client->getResponse()->getStatusCode());
$this->assertTrue($this->hasFlash('success'));
然后我需要测试 SwiftMailer 发送的电子邮件,这意味着必须使用$this->client->enableProfiler()
启用 Profiler :
// Submit
$this->client->enableProfiler();
$this->client->submit($form);
$collector = $this->client->getProfile()->getCollector('swiftmailer');
// User created and emailed
$this->assertTrue($this->hasFlash('success'));
$this->assertSame(1, $collector->getMessageCount());
效果也不错,但现在 Flash Bag 是空的。
我如何/应该如何找回它们?
如果我用
之前,其他所有断言都进展顺利dd($this->client->getContainer()->get('session')->getBag('flashes')->all())
放下闪光灯袋,则会得到一个空数组:[]
。
有一个“成功” 快闪消息集。如果我使用dd($this->client->getResponse()->getContent())
转储响应内容,它将正确显示
在我添加 Flash Bag 一个