测试Multipart PUT phpUnit和Symfony2

时间:2012-03-15 15:39:08

标签: php symfony phpunit put

我正在尝试使用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'
));

EDIT 最终我希望我的看起来像这样

    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

1 个答案:

答案 0 :(得分:0)

默认情况下,createClient()会返回Symfony\Component\HttpKernel\Client。据我所知,它不支持自己构建多部分消息,但您可以自己添加标题并自行创建请求主体。

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