2017-02-21 114 views
0

我正在为Slim中的API端点执行单元测试。这是我用于将数据传递到端点:Slim - 将原始数据字符串传递给请求主体

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

现在需要用XML或JSON字符串来测试端点像下面 -

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

的问题是,withParsedBody()只接受数组或对象。所以我的问题是:将原始数据字符串传递给请求的正确方法是什么?

+0

对于数组 – gaurav

+0

,您可以试试'$ json = json_encode($ string)'而不是'json_decode($ json,true)'。不幸的是,端点期待XML字符串,并且当输入不是XML字符串时会抛出错误。所以我必须通过原始字符串来测试它。 – LazNiko

+0

你可以做'$ request-> getBody() - > write(“string”);' –

回答

1

这是基于杜尚的评论的答案。

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

reparseBody()调用将强制请求对象再次解析新内容。