2017-04-04 223 views
1

爲了測試在返回JSON響應的Symfony2項目的API控制器測試API控制器,我試圖生成喜歡這裏的行動路線:返回JSON響應

$client->getContainer()->get('router')->generate('/api/register/emailverification/', array('email' => '[email protected]'), true) 
$response= $client->getResponse(); 
$this->assertEquals(200, $response);` 

但響應返回null 。我不知道是否有做這種類型喜歡使用狂飲響應的特定測試...

+0

在測試中你不應該「生成」路由,它們必須被硬編碼。 – COil

+0

我試過這個:$ client = static :: createClient(); $ crawler = $ client-> request('GET','/ api/register/emailverification /', array('email'=>'[email protected]m')); $ response = $ client-> getResponse(); $ this-> assertEquals(200,$ response-> getStatusCode());它返回404 – Christophegonfrere

回答

1

在測試中,一個人不能「產生」路線路徑,它們必須被硬編碼:

$client = $this->createClient(); 
$client->request('GET', '/api/register/emailverification/[email protected]'); 
$this->assertTrue($client->getResponse()->isOk()); 

但是,如果你想測試JSON,你可以這樣做:

$this->assertJson($client->getResponse()->getContent()); 

你可以在rest extra bundle中找到其他PHPunit助手。

+0

請如何添加一個主機到這個請求,因爲它返回404(我的主機是127.0.0.1:8000) – Christophegonfrere

+0

但是你的代碼在你的瀏覽器中工作嗎?這是第一步。 – COil

+0

是的,它工作正常 – Christophegonfrere

0

我相信你應該嘗試:

$controllerResponse = $client->getContainer()->get('router')->generate('_validation_email', array('email' => '[email protected]'), true) 
$response= $controllerResponse->getResponse(); 
$this->assertEquals(200, $response); 
+0

仍然是相同的問題 – Christophegonfrere