【问题标题】:How to create a fake Symfony\Component\HttpFoundation\File\UploadedFile in a PHPUnit test?如何在 PHPUnit 测试中创建假 Symfony\Component\HttpFoundation\File\UploadedFile?
【发布时间】:2019-12-09 21:41:15
【问题描述】:

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

我为 Laravel 找到了 solution,但我找不到 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”不存在

我该如何解决这个问题?

【问题讨论】:

  • 所以你问的是如何模拟Symfony\Component\HttpFoundation\File\UploadedFile 对象并禁用(父)构造函数中的路径检查?
  • 是的,你是对的

标签: symfony phpunit


【解决方案1】:

在您的测试目录中,创建一个名为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'
        );
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    相关资源
    最近更新 更多