私はこれを見つけました: http://www.devcomments.com/Uploads-on-functional-test-for-REST-services-to189066.htm#filtered
しかし、Symfony 1.4 で動作させるために、少し変更する必要がありました。形式の問題として、'sfBrowser' を拡張する新しいクラス 'Browser' と 'sfTestFunctional' を拡張する 'TestFunctional' を導入しました。
ブラウザ::アップロードファイル():
content-type に $type パラメーターを追加しました。それ以外の場合、テストは失敗します (「無効な MIME タイプ」)
public function uploadFile($fieldName, $filename, $type = '')
{
if (is_readable($filename))
{
$fileError = UPLOAD_ERR_OK;
$fileSize = filesize($filename);
}
else
{
$fileError = UPLOAD_ERR_NO_FILE;
$fileSize = 0;
}
$this->parseArgumentAsArray($fieldName, array('name' => basename($filename), 'type' => $type, 'tmp_name' => $filename, 'error' => $fileError, 'size' => $fileSize), $this->files);
return $this;
}
TestFunctional::uploadFile()
public function uploadFile($fieldName, $filename, $type = '')
{
$this->browser->uploadFile($fieldName, $filename, $type);
return $this;
}
命名には注意する必要があります。
$browser = new TestFunctional(new Browser());
$browser->
uploadFile('article_image[image]', '/path/to/your/image.gif', 'image/gif')->
post('/articles/1/images.json', array('article_image' => array(
'title' => 'foobar',
'description' => 'lorum ipsum'
)))
;