我有一个HTML表单,其中包含以下输入:<input type="file" name="sentFile" />
表单尚未使用$this->createFormBuilder()
生成。我写了一个extends WebTestCase
的课程。其测试方法如下:
$crawler = $client->request('GET', '/users/import');
$buttonCrawlerNode = $crawler->selectButton('Import');
$form = $buttonCrawlerNode->form();
$testfile = 'import_users.csv';
$destination = 'F:/www/symfony/web/uploads/' . $testfile;
$form['sentFile']->upload($destination);
$form['myparam'] = 'hello';
$crawler = $client->submit($form);
但是当我使用phpunit
命令运行测试时,接收已发布表单的控制器方法显示为空$_FILES
。正确接收了另一个输入(myparam
)。那么如何使用上传的文件?
PS:
参考文献:
答案 0 :(得分:1)
$_FILES
的内容似乎无法更改以模拟文件上传,因此解决方案是使用http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/File/UploadedFile.html类。正如Jakub所说,当我按照我在问题中写的方式提交表单时,控制器的Request
对象会填充此内容,因此我们可以使用$ request-&gt; files-&gt; get('sentFile ')获取与通过表单的UploadedFile
输入发送的文件相对应的sentFile
。