在我的 Symfony web 应用程序中,我有一个允许多个文件上传的表单(通过设置equal的multiple
属性很容易完成)。这很好用:我可以选择多个文件并上传它们。处理表单并获取所有上传的文件也很顺利。但当然,我想预见一个集成测试( )但我没有发现任何模拟多文件上传的可能性。FileType
true
WebTestCase
我现在所拥有的:
...
$uploadedFile = new UploadedFile(...);
$form = ...; // get the form from the crawler
$form['formtype[filename]'][0]->upload($uploadedFile);
$this->client->submit($form);
...
很好
但是现在我想通过 1 个表单提交上传 2 个文件(因为一次上传多个文件时处理逻辑的行为可能不同)。我该怎么做?当我查看http://api.symfony.com/3.0/Symfony/Component/DomCrawler/Field/FileFormField.html时,我看不到任何传入的方法,例如,一组UploadedFile
对象。任何人都有这方面的经验?
如果multiple
设置了该属性,爬虫将创建一个具有单个FileFormField
字段的文件表单字段数组。一个字段可以保存一个文件,因此您需要为多个文件使用多个字段。我通过手动向FileFormField
表单添加更多内容来解决。
$form = ...
// get file field node in DOM
$node = $crawler->filter("input[name='formtype[filename][]']")->getNode(0);
// add additional fields to form (you can create as many as you need)
$newField = new FileFormField($node);
$form->set($newField);
...
// set files with upload()
$form['formtype[filename]'][0]->upload($uploadedFile1);
$form['formtype[filename]'][1]->upload($uploadedFile2);
...
//or with submit values
$crawler->submit($form, [
...
'formtype[filename]' => [$uploadedFile1, $uploadedFile2]
]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句