2016-09-16 13 views
3

サイトからのすべてのページが正常かどうかを確認するためのテストを書いています。symfony 2 - リクエストはリダイレクトに従います

関連する基本コードはこれです:

function pagesUpTest() { 
    static::bootKernel($options); 

    $client = static::$kernel->getContainer()->get('test.client'); 
    $client->setServerParameters($server); 

    $crawler = $client->request('GET', $url); 

    $this->assertTrue($client->getResponse()->isSuccessful()); 
} 

すべてが通常のページのために[OK]を動作します。

リダイレクトを行うページがいくつかあります(古い記事のほうが、新しいバージョンやより優れたバージョンにリダイレクトされます。動的であり、後で表示されるので、別々に扱うことはできません)。

は今、私はちょうどこのようなリダイレクトに成功した場合にアサートスキップする条件を追加しました:

function pagesUpTest() { 
    static::bootKernel($options); 

    $client = static::$kernel->getContainer()->get('test.client'); 
    $client->setServerParameters($server); 

    $crawler = $client->request('GET', $url); 

    if (!$client->getResponse()->isRedirection()) { 
     $this->assertTrue($client->getResponse()->isSuccessful()); 
    } 
} 

まだ...これは後に、すべてがOKであるリダイレクトすることを想定しているので、テストはのための関連性が低いとなりそのような場合。私はリダイレクトに従い、THATページが成功したかどうか確認したいと思います。

どうにかできますか?

答えて

2

あなたは、単に次のようにリダイレクトした場合のリダイレクトをたどることができます。

if ($client->getResponse()->isRedirection()) { 
    $client->followRedirect(); 
} 
$this->assertTrue($client->getResponse()->isSuccessful()); 

は方法でそれ自体でリダイレクトに従うことをクライアントに伝えるためにpossibileようだ:

$client->followRedirects(true); 
$client->setMaxRedirects(10); 

ので、クライアントはそれ自身でリダイレクトに従います(しかし私は決してそれを試しません:))

希望このヘルプ

+0

ちょうど私のマシンを閉じました:)。私は明日にそれを試して、それがうまくいくかどうかを投票+承認します。 – zozo

+0

こんにちは@zozoは心配しないでください、あなたの時間を取る:) – Matteo

+1

最初のソリューションが動作します。二番目に小さな間違いがあります($ this-> clientは$ clientではありません)。修正した後、エラーは発生しませんが、まだ動作していません(恐らくそれ以上の調整が必要です)。それでも...最初はトリックをやりました:)。 – zozo

関連する問題