我正试图使用Symfony2和phpUnit为多部分PUT编写一个单元测试。我不太确定处理这个问题的最佳方式,也找不到任何关于这个主题的文档。
以下是我必须开始的内容,但我不确定如何向多部分迈出下一步。
$client = static::createClient();
//test put method for new file
$xml = new UploadedFile(
dirname ( __FILE__ ).'/testfile.xml',
'testfile.xml',
'application/xml'
);
$crawler = $client->request('PUT', '/file.xml',array(),
array('xml'=>$xml),
array(
'CONTENT_TYPE' => 'application/xml'
));
编辑最终,我希望我的推杆看起来像这个
PUT /v1/files HTTP/1.1
host: files.bimfs.com
date: 2009-07-07T12:49:08-06:00
Content-MD5: 5a1d2ffa5b1fd1d11d694428a6f4b808
Authorization: f9ea57af8da1b02ff8fa6e99736ed3c6cbb95c1b:YTc4NDcyZjI1ZTFjN2E3MzAxODIwZGNlZGNlMTczODQyYjIwODVhMzI4ZDhjZTY4MmY4NmYyZGJjZTUyZjBiNg==
Content-Type: multipart/formdata; boundary=c7ecb1abb999a3de5ab26c49b5ac7f87
--c7ecb1abb999a3de5ab26c49b5ac7f87
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<file>
<name>foo.gif</name>
<dead_date></dead_date>
</file>
--c7ecb1abb999a3de5ab26c49b5ac7f87
Content-Disposition: file; filename=blank.gif
Content-Type: image/gif
Content-Transfer-Encoding: binary
{file binary}
--c7ecb1abb999a3de5ab26c49b5ac7f87--
谢谢,CG
createClient()
返回一个Symfony'Component'HttpKernel'Client
。据我所知,它不支持自己构建一个由多部分组成的消息,但您可以自己添加头并创建请求体。
正如您在问题中已经概述的那样,您知道需要哪个额外的头以及必须如何构建请求主体。