Get Symfony мигает во время функционального теста с включенным профилировщиком - PullRequest
0 голосов
/ 07 июня 2019

Я пишу функциональные тесты для 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

...