Testing AJAX/XMLHttpRequest pages functionally in Symfony2
The Request#isXmlHttpRequest()
method simply checks if the X-Requested-With
header is equivalent to XMLHttpRequest
. If that's the method you're using to determine if a request is an ajax call, then you can simulate the behavior in the test client by adding the appropriate header to the request:
class FooFunctionalTest extends WebTestCase{ $client = static::CreateClient(); $crawler = $client->request('GET', '/foo/', array(), array(), array( 'X-Requested-With' => 'XMLHttpRequest', )); // ...}
More information can be found about the Request object in the source code.
For POST
, PUT
:
$crawler = $client->request('POST', '/foo/', array('param' => 'value'), array(),array( 'HTTP_X-Requested-With' => 'XMLHttpRequest',));
For POST
, PUT
with raw JSON
body:
$crawler = $client->request('POST', '/foo/', array(), array(), array( 'HTTP_X-Requested-With' => 'XMLHttpRequest', 'CONTENT_TYPE' => 'application/json',), '{"param": "value"}');