2016-09-16 8 views
1

ファイルを受け取るPOSTコールバックのテストを作成しようとしています。Laravel 5.2のテスト中に元のファイルを移動しないでください

ザ・コントローラがこの機能を所望の位置に画像を移動させる:

$request->file('image')->move(env('IMG_DIR'), $filename); 

ENV(「IMG_DIR」)は、テストおよびローカル環境で異なるであり、それは実際によく働きます。

私のテストは以下の通りです:

$file = new UploadedFile(base_path() . 'tests/file/test_img.png', 'test.png', 'png', null, null, true); 

$this->call('POST', '/endpoint', null, ['user-jwt' => env('CU_JWT')], ['image' => $file]) 

アップロードは素晴らしい作品と映像が正しく移動され、テストが成功しています。

問題は、テストを実行するたびに、テスト用の画像(tests/file/test_img.png)が移動してディレクトリから消えてしまうことです。 PHPUnit/Laravelに、アップロードは偽造されていて、元のイメージを実際には動かしてはならないと伝える方法はありますか?あなたのdevの環境では

+0

テストが完了したときにファイルを元の場所に戻すだけではどうですか。 –

答えて

2

、画像のコピーを作成:

$originalImagePath = base_path() . 'tests/file/test_img.png'; 
$copyImagePath = base_path() . 'tests/file/test_img_copy.png'; 

File::copy($originalImagePath, $copyImagePath) 

そして、コピーした画像のみ

$file = new UploadedFile($copyImagePath, 'test.png', 'png', null, null, true); // etc. 

でコピーした画像は、あなたのイメージディレクトリを残して、あなたがあなたのを実行し、このように動作テスト、そしてすべてがそれが始まったのと同じ方法で終わる。

関連する問題