Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试返回json响应的api控制器_Json_Rest_Symfony_Phpunit_Guzzle - Fatal编程技术网

测试返回json响应的api控制器

测试返回json响应的api控制器,json,rest,symfony,phpunit,guzzle,Json,Rest,Symfony,Phpunit,Guzzle,为了在Symfony2项目中测试返回json响应的API控制器,我尝试生成如下操作路径: $client->getContainer()->get('router')->generate('/api/register/emailverification/', array('email' => 'email@gmail.com'), true) $response= $client->getResponse(); $this->assertEquals(200,

为了在Symfony2项目中测试返回json响应的API控制器,我尝试生成如下操作路径:

$client->getContainer()->get('router')->generate('/api/register/emailverification/', array('email' => 'email@gmail.com'), true)
$response= $client->getResponse();
$this->assertEquals(200, $response);`

但是响应返回null。我不知道是否需要对这种反应进行特定的测试,比如使用口香糖…

我认为您应该尝试:

$controllerResponse = $client->getContainer()->get('router')->generate('_validation_email', array('email' => 'email@gmail.com'), true)
$response= $controllerResponse->getResponse();
$this->assertEquals(200, $response);
在测试中,不应“生成”路由路径,它们必须硬编码:

$client = $this->createClient();
$client->request('GET', '/api/register/emailverification/email@gmail.com');
$this->assertTrue($client->getResponse()->isOk());
但如果您想测试json,可以执行以下操作:

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

您可以在中找到其他PHPunit帮助程序。

在不应“生成”路由的测试中,它们必须是硬编码的$爬虫程序=$client->request('GET','/api/register/emailverification/',数组('email'=>'email@gmail.com')); $response=$client->getResponse()$此->assertEquals(200美元响应->getStatusCode());它返回404仍然是同一个问题由于它返回404(我的主机是127.0.0.1:8000),我如何才能将主机添加到此请求中,但您的代码是否在浏览器中工作?这是第一步。如果404的
/api/register/emailverification/
不正确,请复制/通过控制器。127.0.0.1:8000/api/register/emailverification/email@gmail.com它在Browser中的工作原理与此不同,电子邮件不是get参数,而是路由的一部分。答案已更新。