2017-06-15 39 views
5

Trong dự án symfony Tôi có một phương pháp PUT và tôi cố gắng đọc dữ liệu như thế này:Testing PUT trong symfony 'php: // input' trống

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

Khi tôi sử dụng Postman nó hoạt động, yêu cầu là trong form-data:

chính: data

giá trị: {"es_title":"edit","es_text":"text edit"}

Nhưng khi tôi thử với WebTestCase trong dự án không hoạt động, $data trong phương pháp PUT trống. tôi cố gắng như thế này trong thử nghiệm:

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

Ngoài ra tôi cố gắng

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

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

Làm thế nào tôi có thể làm gì để vượt qua kỳ thi này?

Trả lời

4

Để lấy dữ liệu từ một PUT tôi sử dụng này bên trong bộ điều khiển:

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

Để thực hiện các yêu cầu từ một testcase tôi sử dụng này:

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

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