Ich versuche diesen Funktionstest auf meinem Laravel-Controller auszuführen. Ich möchte die Bildverarbeitung testen, aber dazu möchte ich das Hochladen von Bildern vortäuschen. Wie mache ich das? Ich habe ein paar Beispiele online gefunden, aber keine scheint für mich zu funktionieren. Hier ist, was ich habe:Wie testet man Datei-Upload mit Laravel und PHP-Unit?
public function testResizeMethod()
{
$this->prepareCleanDB();
$this->_createAccessableCompany();
$local_file = __DIR__ . '/test-files/large-avatar.jpg';
$uploadedFile = new Symfony\Component\HttpFoundation\File\UploadedFile(
$local_file,
'large-avatar.jpg',
'image/jpeg',
null,
null,
true
);
$values = array(
'company_id' => $this->company->id
);
$response = $this->action(
'POST',
'[email protected]',
$values,
['file' => $uploadedFile]
);
$readable_response = $this->getReadableResponseObject($response);
}
Aber der Controller diese Prüfung nicht bestanden bekommt:
elseif (!Input::hasFile('file'))
{
return Response::error('No file uploaded');
}
also irgendwie die Datei nicht korrekt übergeben. Wie gehe ich vor?
aktualisieren
Basierend auf max.lanin des suggestin, ich habe auch versucht:
public function setUp()
{
// Tried with parent::setUp() here and at the end
// parent::setUp();
$local_file = __DIR__ . '/test-files/large-avatar.jpg';
print($local_file);
$_FILES = array(
'file' => array (
'tmp_name' => $local_file,
'name' => 'large-avatar.jpg',
'type' => 'image/jpeg',
'size' => 335057,
'error' => 0,
),
'image' => array (
'tmp_name' => $local_file,
'name' => 'large-avatar.jpg',
'type' => 'image/jpeg',
'size' => 335057,
'error' => 0,
),
);
parent::setUp();
}
aber ohne Erfolg. Die verwendete Datei existiert und die Größe ist korrekt.
ich sehen Sie dies in den Testmodus gesetzt haben. Ist die hochgeladene Datei größer als die maximale Dateigröße in php.ini? –
Nein, das ist es nicht, Upload-Limit ist 2 MB, Testdatei ist 300 KB. –