我在一个包中有一个简单的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中设置的所有路线,但实际上它不应该到达那里,因为路线存在。
答案 0 :(得分:2)
标准客户端实际上并不向服务器发出http请求,它只是调用symfony内核。因此,可能的解决方案是更改您的网址
$crawler = $client->request('GET', '/v2.0/something');