Testing Multipart PUT phpUnit and Symfony2


Testing Multipart PUT phpUnit and Symfony2

我正试图使用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。据我所知,它不支持自己构建一个由多部分组成的消息,但您可以自己添加头并创建请求体。

正如您在问题中已经概述的那样,您知道需要哪个额外的头以及必须如何构建请求主体。