Testing File uploads in Symfony2 Testing File uploads in Symfony2 symfony symfony

Testing File uploads in Symfony2


This was an error in the documentation.

Fixed here:

use Symfony\Component\HttpFoundation\File\UploadedFile;$photo = new UploadedFile('/path/to/photo.jpg', 'photo.jpg', 'image/jpeg', 123);// or$photo = array('tmp_name' => '/path/to/photo.jpg', 'name' => 'photo.jpg', 'type' => 'image/jpeg', 'size' => 123, 'error' => UPLOAD_ERR_OK);$client = static::createClient();$client->request('POST', '/submit', array('name' => 'Fabien'), array('photo' => $photo));

Documentation here


Here is a code which works with Symfony 2.3 (I didn't tried with another version):

I created an photo.jpg image file and put it in Acme\Bundle\Tests\uploads.

Here is an excerpt from Acme\Bundle\Tests\Controller\AcmeTest.php:

function testUpload(){    // Open the page    ...    // Select the file from the filesystem    $image = new UploadedFile(        // Path to the file to send        dirname(__FILE__).'/../uploads/photo.jpg',        // Name of the sent file        'filename.jpg',        // MIME type        'image/jpeg',        // Size of the file        9988    );    // Select the form (adapt it for your needs)    $form = $crawler->filter('input[type=submit]...')->form();    // Put the file in the upload field    $form['... name of your field ....']->upload($image);    // Send it    $crawler = $this->client->submit($form);    // Check that the file has been successfully sent    //  (in my case the filename is displayed in a <a> link so I check    //  that it appears on the page)    $this->assertEquals(        1,        $crawler->filter('a:contains("filename.jpg")')->count()    );}