2017-09-25 97 views
2

我正在使用Lumen 5.5,並且我編寫了簡單的應用程序來上傳文件。流明測試文件上傳5.5

我寫了這樣的測試(以下this教程)

<?php 

class UploadImageTest extends TestCase 
{ 

    Use DatabaseMigrations; 

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

} 

問題是,在我的控制器,$request->file('image')返回null。

<?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)

解決方法很簡單:UploadedFile :: 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() 
} 

希望它能幫助!