在启用分析器的功能测试期间获取Symfony闪烁

时间:2019-06-07 13:10:37

标签: php symfony testing phpunit symfony4

我正在为 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 一个

之前,其他所有断言都进展顺利

0 个答案:

没有答案