2017-02-21 8 views
0

SlimでAPIエンドポイントのユニットテストを行っています。 -ボディをリクエストするためのスリムな生データ文字列

$requestData = '<xml> 
      <appid><![CDATA[app123]]></appid> 
      <device_info><![CDATA[test-device-5678]]></device_info> 
      .... 
      </xml>'; 
    $request->withParsedBody($requestData); 

問題があるwithParsedBodyは()のみの配列を受け入れること

$requestData = [ 
    'field1' => 123, 
    'field2' => 4567, 
    .... 
]  
$request->withParsedBody($requestData); 

今すぐ下記のようなXMLやJSON文字列を使用してエンドポイントをテストする必要があります。これは私がエンドポイントにデータを渡すために使用するものですまたはオブジェクト。だから私の質問は:適切な方法は、要求に生のデータ文字列を渡すのですか?

+0

配列 – gaurav

+0

の 'json_decode($ json、true)'より '$ json = json_encode($ string)'を試すことができます残念ながら、エンドポイントはXML文字列を予期しており、入力がXML文字列でないときにエラーをスローします。だから私はそれをテストするために元の文字列を渡す必要があります。 – LazNiko

+0

よく '$ request-> getBody() - > write(" string ");' –

答えて

1

これは、Dusanのコメントに基づく回答です。

 $request->getBody()->write($requestData); 
     $request->reparseBody(); 

reparseBody()を呼び出すと、要求オブジェクトは強制的に新しいコンテンツを解析します。

関連する問題