我在Slim中为我的API端点执行单元测试。这是我用来将数据传递到端点的原因:
$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 :(得分:1)
这是基于Dusan评论的答案。
$request->getBody()->write($requestData);
$request->reparseBody();
reparseBody()调用将强制请求对象再次解析新内容。
答案 1 :(得分:0)
对我来说会更好
$requestData = '<xml>
<appid><![CDATA[app123]]></appid>
<device_info><![CDATA[test-device-5678]]></device_info>
....
</xml>';
$streamFactory = new \Zend\Diactoros\StreamFactory();
$stream = $streamFactory->createStream($requestData);
$request->withBody($stream);
echo (string) $request->getBody();