2016-04-01 6 views
0

Ich möchte einige Unit-Tests mit Datei-Upload auf Laravel 5.2 tun.Wie Unit Testing + Code-Coverage mit Datei-Upload in Laravel 5.2

Hier ist, wie ich es auf diese answer beziehen sich:

/** app/Http/routes.php **/ 
Route::post('upload', function() { 
    $fileExists = false; 

    if ($_FILES['images']) { 
     $fileExists = true; 
    } 

    return ['result' => $fileExists]; 
}); 

/** tests/ExampleTest.php **/ 
public function testUploadFile() 
{ 
    $file = new \Symfony\Component\HttpFoundation\File\UploadedFile(
     base_path() . '/tests/files/profile.png', 'profile.png'); 

     $response = $this->call('POST', 'upload', 
      [ 
       'firstname' => 'firstname', 
       'lastname' => 'lastname', 
       'promotion' => '2016', 
       'isCoop' => 1 
      ], 
      [ 
       'images' => [$file] 
      ] 
     ); 
} 

Das Ergebnis phpunit ist: phpunit result

Aber, wenn ich überprüfen Sie die Code-Coverage-Ergebnis, die Linie innerhalb des if-Anweisung auf routes.php Datei wird nicht wie unten gezeigt ausgeführt.

Code coverage result

Es scheint, die hochgeladenen Datei nicht in $_FILES Variable eingesetzt ist, so dass er als leer erkannt.

Irgendeine Idee, wie man es repariert ..? Vielen Dank.

Hinweise: Ich habe Larave für einen API-Dienst erstellen, so dass ich nicht verwendete Form der Datei

+0

Mögliches Duplikat von [Laravel 5.2 Mocked File Upload Unit Test schlägt fehl] (http://stackoverflow.com/questions/36196500/laravel-5-2-mocked-file-upload-unit-test-fails) – staskus

Antwort

1

Nach Laravel 5.2.15 hochladen dies geschieht, weil Sie verwenden

Symfony\Component\HttpFoundation\File\UploadedFile 

statt

Illuminate\Http\UploadedFile 

Und Datei wird nie an einen Controller gesendet.

0

Ich glaube, Sie schreiben sollte:

[ 
    'images' => $file 
] 

Statt

[ 
    'images' => [$file] 
] 

Außerdem sollten Sie Illuminate \ Http \ UploadedFile statt Symfony \ Component verwenden \ HttpFoundation \ File \ UploadedFile nach 5.2. 15 siehe Laravel 5.2 Mocked file upload unit test fails