2017-06-15 49 views
5

在symfony項目我有一個PUT方法,我嘗試這樣來讀取數據:測試symfony中把「PHP://輸入」空

$data = file_get_contents('php://input'); 

當我使用郵差它的工作原理,該請求是form-data

鍵:data

值:{"es_title":"edit","es_text":"text edit"}

但是,當我與WebTestCase嘗試在項目沒有行爲PUT方法中的爲空。 我試着像這樣的測試:

$data = array(
     "data" => '{"es_title":"edit","es_text":"edit"}'); 
$this->client->request('PUT', $url, $data, array(), array('HTTP_apikey' => $apikey)); 

我也嘗試

$data = array(
     'data' => json_encode(array(
      'es_title' => 'edit', 
      'es_text' => 'edit' 
     )) 
    ); 

$this->client->request('PUT', $url, $data, array(), array('HTTP_apikey' => $apikey)); 

我該怎麼做才能通過測試?

回答

4

要從PUT得到的數據我用這個控制器內部:

$putData = json_decode($request->getContent(), true); 

爲了從一個TestCase我用這個請求:

$params = [ 
     'es_title' => 'edit', 
     'es_text' => 'edit', 
    ]; 

    $this->client->request(
     'PUT', 
     $url, 
     [], 
     [], 
     [ 
      'CONTENT_TYPE' => 'application/json', 
      'HTTP_X-Requested-With' => 'XMLHttpRequest' 
     ], 
     json_encode($params) 
    );