Обновление 2016/04/26 11:30 GMT + 2 Обходное решение
Так как Laravel 5.2.15, параметр $test удаляется, но нет ясной причины, потому что у Symfony UploadedFile все еще есть параметр $test.
Обходной путь заключается в том, чтобы временно использовать Laravel 5.2.14.
Обновление 2016/04/26 11:00 GMT + 2
Laravel own UploadedFile не передает параметр $test. См. Эти ресурсы:
- https://github.com/laravel/framework/issues/12620
- https://github.com/laravel/framework/commit/5062a9b42632e55ee90b7397141c0b12622447e1
Я знаю, есть еще один вопрос: Как протестировать загрузку файлов в Laravel 5.2, но заметный ответ не работает для меня.
Контрольный пример
Я создаю экземпляр класса Symfony UploadedFile и устанавливаю $test
в true
. Я отправляю файл в 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 [];
}
}
Проблема
- Файл для публикации имеет аргумент
true
для$test
- Опубликованный файл поступает в
upload()
-
$request->file('file')
содержит правильные аргументы, но$test false
Кажется, что аргумент $test не прошел по почтовому вызову. Это ошибка?