2014-05-09 3 views
1

Je vais écrire des UnitTests Symfony2 (dérivés de Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase) pour tester les contrôleurs ajax, similaires à How to get Ajax post request by symfony2 Controller. Mon gros problème est d'obtenir les paramètres dans le sac "demande" de la demande, pas dans le sac "paramètre". Comme dans l'exemple supérieur de la méthode dans le contrôleur ressemble à ceci:Symfony2: UnitTests pour les contrôleurs AJAX

public function ajaxAction(Request $request) 
{ 
    $data = $request->request->get('data'); 
} 

Mais si je fais un var_dump de la demande de $, les paramaters i fournir dans WebTestCase ne figurent pas dans demande- $>demande , mais dans $ request->paramètre. Disons que c'est la partie du code dans mon WebTestCase:

.... 
$client = static::createClient(); 
$client->request('POST', '/ajax/blahblah', ... ?????); 

J'ai déjà essayé fournir le paramètre (s) directement dans l'URL comme

/ajax/blahblah?data=whocares 

J'ai essayé spécifier le paramètre dans un tableau

$client->request('POST', '/ajax/blahblah', array('data' => 'fruityloops')); 

Mais rien n'a fonctionné. Une chance de le faire fonctionner?

Merci à l'avance

Hennes

Répondre

0

Après avoir fait la demande, vous devez obtenir la réponse. Essayez ceci:

$client = static::createClient(); 
$client->request('POST', '/ajax/blahblah', array('data' => 'fruityloops')); 
$response = $client->getResponse(); 
$this->assertEquals(200, $response->getStatusCode()); 

//convert to array 
$data = json_decode($response->getContent(true), true); 

var_dump($data); 
$this->assertArrayHasKey('your_key', $data); 
Questions connexes