Laravel 5.2 | Al probar UploadedFile se pierde el valor de $ test después de la publicación. ¿Error?
Desde Laravel 5.2.15, el parámetro $ test se elimina, pero no hay una razón clara, porque UploadedFile de Symfony todavía tiene el parámetro $ test.
Una solución alternativa es usar Laravel 5.2.14 provisionalmente.
Actualización 2016/04/26 11:00 GMT + 2El propio UploadedFile de Laravel no pasa el parámetro $ test. Ver estos recursos:
https://github.com/laravel/framework/issues/12620https://github.com/laravel/framework/commit/5062a9b42632e55ee90b7397141c0b12622447e1Lo sé, hay otra pregunta:Cómo probar la carga de archivos en Laravel 5.2, pero la respuesta marcada no funciona para mí.
Caso de pruebaCreo una instancia de la clase UploadedFile de Symfony y configuro$test
atrue
. Publico el archivo enfile/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();
}
}
Controladornamespace App\Http\Controllers;
class FileController extends Controller
{
public function upload(Request $request)
{
var_dump($request->file('file')); // $test = false
return [];
}
}
ProblemaEl archivo a publicar tiene el argumentotrue
para$test
El archivo publicado llega aupload()
$request->file('file')
contiene los argumentos correctos, pero
$ prueba esfalso
Parece que el argumento $ test no ha pasado por la llamada posterior. ¿Es esto un error?