アップデート2016年4月26日11:30 GMT + 2回避策
はLaravel 5.2.15ので、$テスト・パラメータが削除されますが、symfonyのにUploadedFileはまだ$テストパラメータを持っているので、明確な理由は、ありません。
回避策は、Laravel 5.2.14を仮使用することです。
アップデート2016年4月26日11時00 GMT + 2
Laravel自身にUploadedFileは$テストパラメータを渡しません。これらのリソースを参照してください。
- https://github.com/laravel/framework/issues/12620
- 私が知っているhttps://github.com/laravel/framework/commit/5062a9b42632e55ee90b7397141c0b12622447e1
は、別の質問があります:How to test file upload in Laravel 5.2が、マークされた答えは私のために動作しません。
テストケース
私はsymfonyのにUploadedFileクラスのインスタンスを作成して、私はtrue
に$test
を設定します。ファイルを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();
}
}
コントローラ
namespace App\Http\Controllers;
class FileController extends Controller
{
public function upload(Request $request)
{
var_dump($request->file('file')); // $test = false
return [];
}
}
問題
- ファイルが投稿されたファイルが
upload()
に到着
$test
- の引数
true
を持っていますは、右の引数が含まれていますが、$テスト引数$テストはポストコールによって、過去ではないようです
偽です。これはバグですか?
はい、そうです。ありがとう! – schellingerht
@schellingerht問題はありません。今日は同じ問題があり、何が起こっているのか把握しようとしていました。 –
Laravelは私が取り組んできた素晴らしいフレームワークです。私はそれを理解するのに多くの時間を費やしましたが、v5.2.0では5.2.29へのアップグレード後に完全に動作していました。このエラーは私にとっても起こり、\ Illuminate \ Http \ UploadedFileを使って解決しました。 –