J'ai un formulaire HTML qui contient l'entrée suivante: <input type="file" name="sentFile" />
Le formulaire n'a pas été généré avec $this->createFormBuilder()
. J'ai écrit une classe que extends WebTestCase
. Sa méthode d'essai effectue les opérations suivantes:Tests fonctionnels Symfony: recevoir le fichier téléchargé
$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);
Mais quand je lance le test avec la commande phpunit
, la méthode du contrôleur qui reçoit la forme affichée montre un $_FILES
vide. L'autre entrée (myparam
) est correctement reçue. Alors, comment utiliser le fichier téléchargé?
PS:
- Je n'ai pas réussi à utiliser PHPT dans Symfony (stackoverflow.com/questions/4922207/integrate-phpt-test-cases-with-phpunit/4925061).
- Je ne l'ai pas essayé Sélénium encore
Références:
- http://symfony.com/doc/current/book/testing.html
- Testing File uploads in Symfony2
- http://api.symfony.com/master/Symfony/Component/BrowserKit/Request.html#method_getFiles
- http://symfony.com/doc/current/reference/forms/types/file.html
Appellerait $ request-> files-> keys() retourner quelque chose dans votre contrôleur? –
Merci Jakub, cela a résolu mon problème! Je ne savais pas à propos de cette propriété. J'ai donc reçu cet objet UploadedFile et demandé ses propriétés pour mapper celles de $ _FILE que j'ai utilisées précédemment dans mon code de traitement de fichier. – Swergas
Je voulais juste vous demander si garder un chemin absolu '' F:/www/symfony/web/uploads/''pour le répertoire uplaod est une bonne pratique? –