2012-03-15 194 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