Symfony功能测试客户端返回403(禁止)

时间:2014-01-20 05:36:09

标签: symfony functional-testing

我在一个包中有一个简单的REST API,我希望有一些测试可以一致地测试这个API的结果。

我实施的第一个测试只是在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() );
    }

}

然而,当我像这样调用我的URL时,我得到一个空的内容体,我在响应中测试HTTP状态代码我得到了403:

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

但是当我在浏览器或cURL命令中放置完全相同的URL时,我得到了正确的输出。

我做错的显而易见的事情是什么?

PS:403来自我在API中设置的所有路线,但实际上它不应该到达那里,因为路线存在。

1 个答案:

答案 0 :(得分:2)

标准客户端实际上并不向服务器发出http请求,它只是调用symfony内核。因此,可能的解决方案是更改您的网址

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