Я пишу функциональные тесты для Symfony 4.2 приложения.
Иногда я хочу проверить, установлено ли флэш-сообщение , я создал этот метод:
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 , что означает, что Profiler должен быть включен, используя $this->client->enableProfiler()
:
// 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())
, я получу пустой массив: []
.
Есть флэш-сообщение "success" .Оно отображается правильно, если я дам дамп содержимого ответа, используя dd($this->client->getResponse()->getContent())
. Все остальные утверждения прошли хорошо, прежде чем я добавил Flash Bag one