2015-06-01 21 views
1

我正在開發一個Symfony2項目。 我創建了一個簡單的TempFile類來操縱UploadFile。這裏是我的構造函數:在單元測試中操作Symfony 2 UploadFile對象

public function __construct(UploadedFile $file, $destination, $suffix) 
{ 
    $this->file    = $file; 
    $this->destination  = $destination; 
    $this->fileId   = sprintf('%s_%s', uniqid(), (string) $suffix); 
} 

而且我move方法

public function move() 
{ 
    $extension = $this->file->guessExtension(); 
    if (!$extension) { 
     throw new \Exception(__METHOD__ . ' -> Unable to detect extension'); 
    } 

    $this->tmpFileName = sprintf('%s.%s', $this->fileId, $extension); 
    $this->file->move($this->destination, $this->tmpFileName); 
} 

我嘗試在我的測試,以創建一個UploadFile對象,這裏是我做過什麼:

protected function setUp() 
{ 
    $this->file = tempnam(sys_get_temp_dir(), 'upload'); 
    imagepng(imagecreatetruecolor(10, 10), $this->file); 
    $this->uploadedFile = new UploadedFile($this->file, "test.png"); 
} 

public function testMoveWithAValidUploadedFile() 
{ 
    $tempFile = new TempFile($this->uploadedFile, '/tmp', 'tmp'); 
    $tempFile->move(); 
    // Future assertion 
} 

我有以下錯誤:

Symfony\Component\HttpFoundation\File\Exception\FileException: The file "test.png" was not uploaded due to an unknown error 

任何想法?

THX, 問候

回答

1

從存儲器,Symfony2中檢查是否一個文件被上傳如使用is_uploaded_file()請求的一部分。這可以使用UploadedFile類的測試模式來覆蓋。您還可以定義哪些PHP上傳錯誤代碼構成成功。

copy(__DIR__ . '/Fixtures/test.pdf', '/tmp/test.pdf'); 
new UploadedFile(
    '/tmp/test.pdf', 
    'original.pdf', 
    null, 
    null, 
    UPLOAD_ERR_OK, 
    true /* test */ 
) 
+0

有助於我的情況,thx –