2016-09-16 128 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()); 
} 

一切工作正常進行正常的網頁。

不過,也有使重定向幾頁(一些老的文章,使對他們的更新,更好的版本重定向 - 是動態的,更可以在以後出現,使他們不能單獨處理)。

現在我只是增加了一個條件跳過斷言,如果成功就這樣重定向:

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

還是......這是假設重定向後一切正常,所以測試變得少有關這些情況。我想遵循重定向,並檢查THAT頁面是否成功。

什麼辦法可以做到這一點?

回答

2

你可以簡單地跟隨重定向中的重定向的情況如下:

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

似乎不可能性告訴給客戶端本身與方法跟隨重定向:

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

所以客戶端按照自己的重定向(但我從來沒有嘗試:) :)

希望這個幫助

+0

剛剛關閉了我的機器:)。我會明天嘗試並投票+接受它是否有效。 – zozo

+0

嗨@zozo別擔心,請花時間:) – Matteo

+1

第一個解決方案的作品。其次有一個小錯誤(不是$ this-> client是$ client)。修復後,它不給錯誤,但仍然不工作(可能需要更多的調整)。仍然...第一個人做了訣竅:)。 – zozo