2017-09-25 9 views
2

私はルーメン5.5を使用しています。ファイルをアップロードする簡単なアプリを書いています。ルーメンでのファイルのアップロード5.5

私は

<?php 

class UploadImageTest extends TestCase 
{ 

    Use DatabaseMigrations; 

    public function testUploadingImageSuccessfully() 
    { 
     $this->json('POST', '/images', [ 
      'image' => UploadedFile::fake()->image('image.jpg') 
     ])->assertResponseOk() 
    } 

} 

問題は私のコントローラで、$request->file('image')リターンがヌルということである(thisチュートリアル以下)のようにテストを書きました。

<?php 

use Illuminate\Http\Request; 

class UploadController extends Controller 
{ 

    public function upload(Request $request) 
    { 
     if ($request->file('image')) { // always return null 
      return "File is uploaded!"; 
     } 

     return "File is not uploaded!"; 
    } 

} 

私は(this oneのような)他の質問をチェックし、運で与えられた解決策を試してみました!

答えて

1

同じ問題の答えを探している間にこの質問に出くわしたが、それが関連しているかどうかわからなかったので、私は自分のユースケースに関連するものを提出した。 (Here)

解決方法は簡単です:アップロードされたファイル:: fake()はJSONでは動作しません。これはXmlHttpRequestを使ってファイルアップロードを偽装するためです(私が知る限り)。そのため、このことから、あなたのテストを変更する必要があります。これに

public function testUploadingImageSuccessfully() 
{ 
    $this->json('POST', '/images', [ 
     'image' => UploadedFile::fake()->image('image.jpg') 
    ])->assertResponseOk() 
} 

を:

public function testUploadingImageSuccessfully() 
{ 
    $this->call('POST', '/images', [ 
     'image' => UploadedFile::fake()->image('image.jpg') 
    ])->assertResponseOk() 
} 

はそれが役に立てば幸い!

関連する問題