Testing AJAX/XMLHttpRequest pages functionally in Symfony2 Testing AJAX/XMLHttpRequest pages functionally in Symfony2 symfony symfony

Testing AJAX/XMLHttpRequest pages functionally in Symfony2


After search with "Problematic" answer, the correct syntax is:

$crawler = $client->request('GET', '/foo/', array(), array(), array(    'HTTP_X-Requested-With' => 'XMLHttpRequest',));


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"}');