【发布时间】:2013-04-04 14:03:38
【问题描述】:
我有一个 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
参考资料:
【问题讨论】:
-
会调用 $request->files->keys() 在你的控制器中返回任何东西吗?
-
谢谢Jakub,这解决了我的问题!我不知道这个属性。所以我收到了这个 UploadedFile 对象并请求它的属性来映射我之前在文件处理代码中使用的 $_FILE 的属性。
-
只是想问一下uplaod目录的绝对路径
'F:/www/symfony/web/uploads/'是否是一个好习惯?
标签: testing symfony upload phpunit