Aggiornamento 2016/04/26 11:30 GMT + 2 Soluzione
Dal laravel 5.2.15, il parametro di prova $ è stato rimosso, ma non v'è alcuna ragione evidente, perché UploadedFile di Symfony ha ancora il parametro $ test.
Una soluzione alternativa consiste nell'utilizzare provvisoriamente Laravel 5.2.14.
Aggiornamento 2016/04/26 11:00 GMT + 2
proprio UploadedFile di laravel non passa il parametro $ test. Vedere queste risorse:
- https://github.com/laravel/framework/issues/12620
- https://github.com/laravel/framework/commit/5062a9b42632e55ee90b7397141c0b12622447e1
Lo so, c'è un'altra domanda: How to test file upload in Laravel 5.2, ma la risposta marcata non funziona per me.
Test Case
ho creare un'istanza della classe UploadedFile di Symfony e ho impostato $test
a true
. Inserisco il file in file/upload
.
class FileControllerTest extends TestCase
{
use \Illuminate\Foundation\Testing\DatabaseTransactions;
private $file;
public function setUp()
{
parent::setUp();
$this->file = new Symfony\Component\HttpFoundation\File\UploadedFile(
public_path() . '/examples/example.jpg',
'example.jpg',
'image/jpeg',
filesize(public_path() . '/examples/example.jpg'),
null,
true // for $test
);
}
/** @test */
public function it_uploads_a_valid_file()
{
var_dump($this->file); // $test = true
$this->call('POST', 'file/upload', [], [], ['file' => $this->file],
['accept' => 'application/json']);
$this->assertResponseOk();
}
}
controller
namespace App\Http\Controllers;
class FileController extends Controller
{
public function upload(Request $request)
{
var_dump($request->file('file')); // $test = false
return [];
}
}
Problema
- Il file da inviare ha l'argomento
true
per$test
- Il file inviato arriva in
upload()
$request->file('file')
contiene gli argomenti giusti, ma$ test è falso
Sembra che il $ test argomento non è passato dalla chiamata posta. è un insetto?
Sì, hai ragione. Grazie! – schellingerht
@schellingerht Nessun problema, ho avuto lo stesso problema oggi e stavo cercando di capire cosa sta succedendo –
Laravel è un ottimo framework su cui ho lavorato, ma questi cambiamenti irrompono mi fanno incazzare! Ho trascorso molte ore a capirlo, in v5.2.0 funzionava perfettamente dopo l'aggiornamento alla 5.2.29 questo errore è successo anche su di me, risolto usando '\ Illuminate \ Http \ UploadedFile' Grazie per la risposta. –