【问题标题】:Symfony functional test client returns 403 (Forbidden)Symfony 功能测试客户端返回 403(禁止)
【发布时间】:2014-01-20 05:36:08
【问题描述】:

我在捆绑包中有一个简单的 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 中设置的全部路由,但实际上它不应该到达那里,因为路由存在。

【问题讨论】:

    标签: symfony functional-testing


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我希望会是这样。我浏览了文档,但找不到任何参考。
    • 看文档,不明显。
    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 2013-08-06
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多