首页 > 解决方案 > 如何在 PHPUnit 测试中创建假 Symfony\Component\HttpFoundation\File\UploadedFile?

问题描述

我无法UploadedFile在我的 PHPUnit 测试中创建假货。

我找到了Laravel 的解决方案,但找不到 Symfony 的解决方案。

这是我的代码:

$path = '/tmp';
$originalName = 'MANA-BULL 12-2018 Ali.pdf';
$mimeType = "application/pdf";
$size = 4455;
$error = 0;
$fileRaw = new UploadedFile(
  $path,
  $originalName,
  $mimeType,
  $size,
  $error,
  $test = false
);

return $fileRaw;

我得到以下异常:

Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException:文件“/tmp”不存在

我该如何解决这个问题?

标签: symfonyphpunit

解决方案


在您的测试目录中,创建一个名为 fixtures 的文件夹。在该文件夹中,放置您的测试 PDF 文件。从您的测试中,您现在可以创建一个上传文件,如下所示:

<?php

namespace App\Tests\Functional;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpFoundation\File\UploadedFile;

class UploadTest extends WebTestCase
{
    public function test_uploadFile()
    {
        $uploadedFile = new UploadedFile(
            __DIR__.'../fixtures/foo.pdf',
            'foo.pdf'
        );
    }
}

推荐阅读