2014-01-20 89 views
1

我在一個包中有一個簡單的REST API,我想要有一些測試可以持續測試這個API的結果。Symfony功能測試客戶端返回403(禁止)

我實現了簡單的第一個測試調用URL的GET:

namespace Me\Bundle\ApiBundle\Tests\Controller; 

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class SomeControllerTest extends WebTestCase { 

    public function testGetSomething() 
    { 
     $client = static::createClient(); 

     $crawler = $client->request('GET', 'http://local.api.example.com/app_dev.php/v2.0/something'); 

      // Purely here for testing purposes! 
     print_r($client->getResponse()->getContent()); 
    } 

} 

然而,當我打電話給我的網址這樣我得到一個空的內容主體,我測試的響應HTTP狀態代碼我拿到403:

$client->getResponse()->getStatusCode(); 

但是,當我把完全相同的網址在瀏覽器或捲曲命令我得到正確的輸出。

我做錯了什麼是顯而易見的事情?

PS:403來自我在API中設置的所有路線,但實際上它不應該到達那裏,因爲路線存在。

回答

2

標準客戶端實際上並沒有向服務器發送http請求,它只是調用symfony內核。所以,可能的解決辦法是改變你的網址

$crawler = $client->request('GET', '/v2.0/something'); 
+0

謝謝。我希望這是事實。我瀏覽了文檔,但找不到任何參考。 – Luke

+0

閱讀文檔,並不明顯。 –