Ico*_*ood 6 testing ajax phpunit controller symfony
我的一个控制器中只有通过AJAX访问的情况,我有以下代码.
if (!$request->isXmlHttpRequest()) {
$response = new Response();
$response->setContent('AJAX requests only!');
return $response;
}
Run Code Online (Sandbox Code Playgroud)
当我测试时,这给了我一个问题,因为该请求实际上并未通过AJAX进行.这样每次都会破坏我的测试.我该如何解决这个问题呢?
我的想法:
其他人有任何其他想法或提示,我错过了上述工作之一吗?
当然在Icode4food的情况下,最好使用Matt的解决方案,但这里是如何找到当前环境:
$this->container->getParameter(‘kernel.environment’)
Run Code Online (Sandbox Code Playgroud)
查看类中的代码和isXmlHttpRequest类中的Request方法getHeaders,ServerBag下面的代码应该可以解决问题:
$client->request(
'GET',
'/path/to/test',
array(),
array(),
array(
'HTTP_X-Requested-With' => 'XMLHttpRequest',
)
);
Run Code Online (Sandbox Code Playgroud)
我没有亲自测试,但我认为它应该有效.下面的代码行Request用于检查http请求是否为a XmlHttpRequest.
return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');
Run Code Online (Sandbox Code Playgroud)
在代码中,$this->headers使用以下命令设置:
$this->headers = new HeaderBag($this->server->getHeaders());
Run Code Online (Sandbox Code Playgroud)
该方法getHeaders创建一个标头数组.每个服务器变量HTTP_以及一些特殊服务器变量CONTENT_TYPE等都放在此数组中.
希望这可以帮助.
问候,
马特
| 归档时间: |
|
| 查看次数: |
1665 次 |
| 最近记录: |