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() );}
I found this article, https://coderwall.com/p/vp52ew/symfony2-unit-testing-uploaded-file, and works perfect.
Regards