2015-08-18 62 views
0

以下代碼始終導致找不到路由。但路線確實存在。絕對URL在Symfony2中失敗WebCaseTest

$client = static::createClient(); 
$crawler = $client->request(
    'GET', 
    '/app_dev.php/admin/', 
    array(), 
    array(), 
    array("HTTP_HOST" => "dev.example:8080")); 

但總是失敗。如果我在我的瀏覽器中訪問http://dev.example:8080/app_dev.php/admin/,那麼它工作正常。

它像PHPUnit不能看到那個主機?

+0

您是否嘗試過沒有設置HTTP_HOST?我不確定你是否需要它,因爲你正在運行來自Symfony2項目的命令dir – DonCallisto

+0

沒有'HTTP_HOST'它只是使用localhost –

+0

返回的錯誤是什麼? – DonCallisto

回答

3

$crawler->request()不應該接收到實際的URI,而應該接收到前端控制器之後的部分。所以在你的情況下,使用:

$client = static::createClient(); 
$crawler = $client->request(
    'GET', 
    '/admin/', 
    array(), 
    array(), 
    array("HTTP_HOST" => "dev.example:8080")); 

這背後的原因是,客戶端實際上並沒有要求一個頁面(對主機)。它只是模擬一個請求,通過創建一個Request對象,將它傳遞給AppKernel,然後解析Response。這要快得多。

如果您想使用真實請求進行測試,我建議您安裝並使用MinkGoutte

+0

這似乎工作。我相信我嘗試過這個。現在到下一期。它完全忽略了我的自定義標題。 '「HTTP_X-Token」=>「an78f」' –