2017-04-04 111 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