1

我有一个包含以下输入的 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:

  • 我没有成功在 Symfony 中使用 PHPT(stackoverflow.com/questions/4922207/integrate-phpt-test-cases-with-phpunit/4925061)。
  • 我还没有尝试过 Selenium

参考:

4

1 回答 1

1

的内容$_FILES似乎无法更改以模拟文件上传,因此解决方案是使用http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/File/UploadedFile.html类。正如 Jakub 所说,当以我在问题中所写的方式提交表单时,Request控制器的对象会填充此内容,因此我们可以使用 $request->files->get('sentFile') 来获取UploadedFile对应的到通过表单输入发送的文件sentFile

于 2013-04-08T10:40:40.173 回答