Absolute URL 在 Symfony2 WebCaseTest 中失败
Absolute URL fails in Symfony2 WebCaseTest
以下代码总是导致找不到路由。但路线确实存在。
$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 无法看到那个主机?
$crawler->request()
不应接收实际的 URI,而是前端控制器之后的部分。所以在你的情况下,使用:
$client = static::createClient();
$crawler = $client->request(
'GET',
'/admin/',
array(),
array(),
array("HTTP_HOST" => "dev.example:8080"));
这背后的原因是客户端实际上并没有(向主机)请求页面。它只是模拟一个请求,通过创建一个 Request
对象,将它传递给 AppKernel
然后解析 Response
。这样快多了。
以下代码总是导致找不到路由。但路线确实存在。
$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 无法看到那个主机?
$crawler->request()
不应接收实际的 URI,而是前端控制器之后的部分。所以在你的情况下,使用:
$client = static::createClient();
$crawler = $client->request(
'GET',
'/admin/',
array(),
array(),
array("HTTP_HOST" => "dev.example:8080"));
这背后的原因是客户端实际上并没有(向主机)请求页面。它只是模拟一个请求,通过创建一个 Request
对象,将它传递给 AppKernel
然后解析 Response
。这样快多了。