2012-03-15 73 views
1

我正在尝试使用Symfony2和phpUnit编写一个多部分PUT的单元测试。我不太确定处理这个问题的最佳方式,而且我无法找到关于该主题的任何文档。测试Multipart PUT phpUnit和Symfony2

这是我必须开始,但我不知道如何使下一步到多部分。

$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

回答

0

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

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

+1

有关处理此问题的最佳方法的任何建议?我希望能够继续使用响应爬虫。 – 2012-03-15 18:05:30

+0

这与响应无关。 – hakre 2012-03-15 18:20:21