Symfony2 WebCaseTest中的绝对URL失败

时间:2015-08-18 11:19:22

标签: php symfony phpunit functional-testing

以下代码始终导致找不到路由。但路线确实存在。

$client = static::createClient();
$crawler = $client->request(
   'GET', 
   '/app_dev.php/admin/', 
   array(), 
   array(), 
   array("HTTP_HOST" => "dev.example:8080"));

但总是失败。如果我在浏览器中转到http://dev.example:8080/app_dev.php/admin/,那么它可以正常工作。

就像PHPUnit不能那个主持人?

1 个答案:

答案 0 :(得分:3)

$crawler->request()不应该收到实际的URI,而应该是前端控制器之后的部分。所以在你的情况下,使用:

$client = static::createClient();
$crawler = $client->request(
   'GET', 
   '/admin/', 
   array(), 
   array(), 
   array("HTTP_HOST" => "dev.example:8080"));

这背后的原因是客户端实际上没有请求页面(到主机)。它只是通过创建Request对象,将其传递给AppKernel然后解析Response来模拟请求。这要快得多。

如果您想使用真实请求进行测试,建议您安装并使用MinkGoutte