如何使用vfsStream模拟图像和其他文件格式?

时间:2018-06-21 14:16:12

标签: php mocking vfs-stream

我能够模拟任何大小的文本文件和任何分辨率的图像。

但是对于我的测试,我需要同时具有任何分辨率和任何文件大小(例如:800x600px和100 MB)的图像以及其他文件格式(例如PDF)。

当我使用LargFileContent时,模仿类型变为text/plain

use org\bovigo\vfs\vfsStream;
use org\bovigo\vfs\content\LargeFileContent;
use Illuminate\Http\UploadedFile

function createImageUploadFile()
{
    $root = vfsStream::setup(
        sys_get_temp_dir()
    );

    $virtualFile = vfsStream::newFile('testFile.jpg')
        ->withContent(LargeFileContent::withMegabytes(100))
        ->at($root);

    // This sets the right mimetype but overwrites the file size
    // imagejpeg(
    //     imagecreate(800, 600),
    //     $virtualFile->url()
    // );

    return new UploadedFile(
        $virtualFile->url(),
        null,
        //mime_content_type($file->url()),
        'image/jpeg', // no impact, remains a text/plain
        null,
        null,
        true
    );
}

如何生成任何大小的任何类型的文件(mimetype)以及任何大小和文件大小的图像(png,jpg)?

0 个答案:

没有答案