2014-05-09 307 views
1

我打算編寫一些Symfony2單元測試(從Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase派生)來測試ajax控制器,類似於How to get Ajax post request by symfony2 Controller。 我的大問題是將參數放入請求的「請求」包中,而不是放入「參數」包中。類似於上例中的控制器的方法是這樣的:Symfony2:單元測試的AJAX控制器

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

但是,如果我做$請求的的var_dump的PARAMATERS我提供的WebTestCase不會出現在$請求 - >要求 ,但在$ request->參數。比方說,這是我webtestcase的部分代碼:

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

我已經嘗試過提供的參數(一個或多個)直接在URL中作爲

/ajax/blahblah?data=whocares 

我試圖指定數組中的參數

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

但沒有任何工作。有機會得到這個運行?

在此先感謝

亨尼斯

回答

0

後,您提出請求,你需要得到響應。試試這個:

$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);