Symfony PHPUnit LogicException:请求未重定向。西蒙尼

Symfony PHPUnit LogicException:请求未重定向。西蒙尼,symfony,phpunit,Symfony,Phpunit,我正在尝试使用phpunit测试一个带有重定向的简单注册,我一直存在以下错误: 测试等级: <?php namespace Tests\AppBundle\Services; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class SecuriteTest extends WebTestCase { private $user; public function __construct() {

我正在尝试使用phpunit测试一个带有重定向的简单注册,我一直存在以下错误:

测试等级:

<?php

namespace Tests\AppBundle\Services;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class SecuriteTest extends WebTestCase
{

    private $user;

    public function __construct() {
        $this->user = static::createClient();
    }

    public function testsendCreateAccountMail(){

        $crawler = $this->user->request('GET', '/inscription');

        $this->assertEquals(1, $crawler->filter('h1:contains("Informations personnelles")')->count());

        $form = $crawler->selectButton('submitInscription')->form();

        $form['inscription[gender]']     = 'Masculin';
        $form['inscription[name]']       = 'Test';
        $form['inscription[firstName]']      = 'Test';
        $form['inscription[username]']    = 'Test-25@gmail.com';
        $form['inscription[birthDate]']    =  '05/10/1992';
        $form['inscription[pseudo]']    = 'Test';
        $form['inscription[password][first]']    = 'blablabla';
        $form['inscription[password][second]']    = 'blablabla';
        $form['inscription[account]']    = 'Particulier';
        $form['inscription[mentionsLegales]']    = '1';

        $this->user->submit($form);

        $crawler = $this->user->followRedirect();

        $this->assertEquals(1, $crawler->filter('.testFlash:contains("Vous allez recevoir une demande de confirmation sur votre adresse email")')->count());

    }
}

我建议您添加更多关于流的各个方面的测试,例如http通信的状态。例如,您可以在每次服务器交互后添加请求正常的内容:

    $crawler = $this->user->request('GET', '/inscription');
    // check server response:
    $this->assertEquals(200, $client->getResponse()->getStatusCode(), $client->getResponse()->getContent());
    // or more simply:
    $this->assertTrue($client->getResponse()->isSuccessful());
    // then check the response content
    $this->assertEquals(1, $crawler->filter('h1:contains("Informations personnelles")')->count());
同样,在遵循重定向测试之前,请确保post工作正常,并且不会出现类似500的错误:

    $this->user->submit($form);
    $this->assertTrue($client->getResponse()->isRedirection());
    $crawler = $this->user->followRedirect();

希望有此帮助

我猜响应(表单提交后)没有30X http代码,因此它不是真正的重定向响应。因此
followRedirect()
正在引发该异常。谢谢,现在重定向可以工作了,但是我对最后一个带筛选器的assertEquals有一个问题。Flashbag消息(代码的最后一行),(断言false为true失败。),我输入了完全相同的消息。