2017-06-05 18 views
3
私はリダイレクトでPHPUnitで簡単な登録をテストしようとしています

、私はこのエラーがすべての時間を持っている:PHPUnit LogicException:リクエストがリダイレクトされませんでした。 symfonyの

enter image description here

Testクラス:

<?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]'] = '[email protected]'; 
     $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()); 

    } 
} 

私もでテストしてみてくださいたった3つの入力を持つ連絡フォームですが、私はまだ同じエラーがあります。

は、私はあなたが一例として、HTTP通信の状態をフローのあらゆる側面についての詳細テストを追加することをお勧めあなたに

+0

私はレスポンス(フォーム送信後)は30XのHTTPコードを持っていなかったので、実際にはリダイレクトレスポンスではないと思います。したがって、 'followRedirect();'はその例外をスローしています。 –

答えて

2

ありがとうございます。ポスト作業細かいことをフォローリダイレクトテストの前に、同様に

$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()); 

をし、500のようなエラーを与えていない:例として、あなたは、要求が大丈夫だったことを、すべてのサーバーの相互作用の後に追加することができます

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

希望のヘルプ

+0

ありがとう、今、リダイレクトは動作しますが、私は最後のassertEqualsフィルタに問題があります。 Flashbagメッセージ(最後のコード行)、(falseがtrueであると主張して失敗しました)、私はまったく同じメッセージを入れました。 – chk35